| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| System Tray http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2991 |
Страница 1 от 1 |
| Автор: | Nikola Kirov [ Пон Окт 02, 2006 11:33 pm ] |
| Заглавие: | System Tray |
Как става една програма да се направи да се минимизира не в таск бара а в system tray? Работя с майкрософтското студио. Че не се сещам изобщо откъде да го почна |
|
| Автор: | Predator_MF [ Вто Окт 03, 2006 1:00 am ] |
| Заглавие: | |
Ползвай функцията Shell_NotifyIcon() |
|
| Автор: | Nikola Kirov [ Вто Окт 03, 2006 1:22 am ] |
| Заглавие: | |
Нещо не схващам ква е идеята с това |
|
| Автор: | Predator_MF [ Вто Окт 03, 2006 2:33 am ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
Значи, за да направиш иконка в System Tray използваш функцията:
вадя ти от MSDN dwMessage е командата, която ще се изпълни, възможни са три стойности: NIM_ADD: добавя иконка в System Tray NIM_DELETE: изтрива иконка в System Tray NIM_MODIFY: променя иконка в System Tray Втория параметър ти е указател към NOTIFYICONDATA структура, в която стои самата иконка както и няколко параметъра за извежданата иконка.
За изчертаването на иконката са необходими следните параметри (само на тези ще се спра щото става дълга и широка): cbSize: Размера на структурата hWnd: Handle на прозореца, който ще приема съобщенията uId: Това е ID номер на иконката в статуса uFlags: Значи, тук просто задаваш комбинация от следните стойности в зависимост от това какво точно ще правиш с иконката: NIF_ICON: Passing this flag indicates that the value for the hIcon will be the icon that appears in the taskbar status area. NIF_MESSAGE: Passing this flag indicates that the uCallBackMessage value will be used as the callback message. NIF_TIP: Passing this flag indicates that the value of szTip will be used as the ToolTip for the icon in the taskbar status area. uCallBackMessage: Identifier of the notification message sent to the window that is used to receive the messages. hIcon: Handle на иконката (самата картинка) която ще се изчертае в tray-a szTip: Стринг който ще се използва за "Tooltip" на иконката Накратко (то стана дълго и подробно де Прост пример:
От теб остава да си дефинираш съобщение което ще се се подава към програмата ти при поява на движение върху иконката и там да хващаш командите пратени от иконката (WM_LBUTTONDOWN, WM_MOUSEMOVE и пр.). Извинявай ако в кода откриеш грешки, ползвам Delphi по принцип и някой път меша синтаксиса му с този на студиото, все пак принципа е абсолютно същия. |
||||||||||||||||||||||||||||
| Автор: | Nikola Kirov [ Вто Окт 03, 2006 2:43 am ] |
| Заглавие: | |
Аха. Като че ли ми просветна Мерси за дългото изложение. Явно ще трябва да отделя повечко време за това че да си го организирам като хората. |
|
| Автор: | Predator_MF [ Вто Окт 03, 2006 2:51 am ] |
| Заглавие: | |
E това е само тая част за създаване на иконка в Tray-а, трябва да направиш Handler за кликания с мишка, изкачане на Popup Menu например и да триеш програмата от статусбара на Windows при Minimize, аз си играх две седмици да го напиша всичкото това в Delphi и оттогава го ползвам навсякъде където ми се наложи. |
|
| Автор: | darkyp [ Вто Окт 03, 2006 9:45 am ] |
| Заглавие: | |
правил съм го на делфи, лесно става, ако искаш ще шерна. освен shell_notifyicon трябва да се скрие и application.handle - ако искаш да не ти остава в taskbar-а. на shell_notifyicon му казваш какво съобщение да ти праща и на кой прозорец - обикновено на глваната форма - и там си хващаш кликания и други... |
|
| Автор: | darkyp [ Вто Окт 03, 2006 9:50 am ] |
| Заглавие: | |
и още нещо, забравих да допълня горе, когато explorer-а крашне обикновено си загубва трея. хубаво е да сложиш таймер, който например на всяка секунда да вика shell_notifyicon да се регва в трея. аа, сега се сещам и още един проблем, вероятно за делфи само важи защото аз там витая. та проблема (за който разбира се има решение което мисля съм отиграл) е при shutdown / logoff, че трябва да си обработиш събитието сам (т.е. не се отработва автоматично от делфи) и да си затвориш програмата, иначе windows няма да се shutdown / logoff. |
|
| Автор: | Nikola Kirov [ Вто Окт 03, 2006 11:21 am ] |
| Заглавие: | |
Явно въпроса си иска повечко внимание. Ще го отваботя като си посвърша по спешната работа. Засега ще го оставя както е. После ако имам някакви въпроси пак ще пиша. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|