Minimizing Window To Tray

2 отговора 125 прегледа
#1

Minimizing Window To Tray

Taka...opraihme go onq buton , sega ostava o6te ne6to Kak da nakaram dade prozrec da se navre vyv sys-tray-a....znam 4e 6te e s hell_NotifyIcon samo 4e ne znam kak da zadam vtoriq parametyr na tova API...trqbva li da si pravq struktura za ikonata ili moga da izpolzvam gotova?

Отговор
в отговор на _XTREME_ #2

Re: Minimizing Window To Tray

BOOL CreateTrayIcon(HWND hWnd, UINT uId, UINT uMessage)
{
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hWnd; //Прозорец който да получава нотификациите
tnid.uID = uId;//Идентификатор на иконата
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = dwMessage; /*Съобщение, което ще ти се изпраща при нотификация на иконата - най-добре си регистрирай твое с RegisterWindowMessage*/
tnid.hIcon = LoadIcon( GetModuleHandle(NULL), IDI_YOUR_ICON); //Самата икона
_tcscpy(tnid.szTip, TEXT("Simple tooltip"));
return Shell_NotifyIcon(NIM_ADD, &tnid);
}

Това създава икона в трай-а. Прозореца си го сркий сам чрез ShowWindow.
При нотификация на иконата ти се генерира съобщението което си задал при попълването на NOTIFYICONDATA структурата. Ето как да го бработиш :
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
........
if (uMsg == uMyRegisteredMessage)
{
UINT uId = (UINT)wParam;
UINT uTrayMsg ( UINT) lParam;
if ( uID == uMyTrayIconID) // Id-то което си задал при попълване на структурата
{
switch(uTrayMsg)
{
case WM_RBUTTONUP:
......
break;
}
}
}
}

Ето как се маха иконата от трай-а:
BOOL RemoveFromTray(HWND hWnd, UINT uId)
{
NOTIFYICONDATA tnid;

tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hWnd;
tnid.uID = uId;
return Shell_NotifyIcon(NIM_DELETE, &tnid);

}

Ох баня, ох кеф
Отговор
в отговор на Teляka #3

Re: Minimizing Window To Tray

Mерси много!

Отговор