Ikona w systray-uFunkcja odpowiedzialna za dodawanie, modyfikowanie i usuwanie ikony w pasku systemowym to: Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid); Jeżeli operacja zakończyła się sukcesem to funkcja zwróci wartość różną od zera. Parametry: DWORD dwMessage może przyjmować następujące wartości: o NIM_ADD - dodawanie ikony o NIM_DELETE - usuwanie ikony o NIM_MODIFY - modyfikowanie ikony PNOTIFYICONDATA pnid jest to obiekt struktury NOTIFYICONDATA Jej pola to: o DWORD cbSize - rozmiar struktury o HWND hWnd - wskaźnik do okna otrzymującego komunikaty od paska o UINT uID - identyfikator ikony o UINT uFlags - flaga zawierająca informacje jakie parametry są ustawiane mogą być to: - NIF_MESSAGE - komunikat - NIF_ICON - ikona - NIF_TIP - podpowiedź o UINT uCallbackMessage - identyfikator komunikatu wysyłanego do aplikacji po akcji na ikonie o HICON hIcon - uchwyt ikony o char szTip[64] - tablica przechowująca podpowiedź pojawiającą się po najechaniu na ikonę Przykład wywołania ikony: #define WM_IC (WM_USER + 1) //definiujemy identyfikator komunikatu HICON icon=AfxGetApp()->LoadIcon(IDI_ICON1); //ładujemy ikone z zasobów Funkcja wywołująca ikonę będzie wyglądać mniej więcej tak: NOTIFYICONDATA pnid; //tworzymy obiekt struktury NOTIFYICONDATA pnid.cbSize = sizeof(NOTIFYICONDATA); //zapisujemy wielkość struktury pnid.hWnd = this->GetSafeHwnd(); //dajemy wskaźnik do okna LPSTR lTip("Moja podpowiedź"); //tworzymy zmienną znakową i zapisujemy do niej podpowiedź jaka ma się pokazywać po najechaniu na ikonę pnid.uFlags = NIF_MESSAGE|NIF_ICON | NIF_TIP ; //wybieramy które elementy będą ustawiane pnid.uID = 1; //podajemy identyfikator ikony pnid.uCallbackMessage = WM_IC; //podajemy identyfikator komunikatu lstrcpyn(pnid.szTip, lTip, sizeof(pnid.szTip)); //zapisujemy podpowiedź do struktury pnid pnid.hIcon = icon; //dajemy uchwyt do ikony int res = Shell_NotifyIcon(NIM_ADD, &pnid); //wywołujemy funkcje Shell_NotifyIcon z parametrem NIM_ADD, czyli dodajemy ikonę W przypadku modyfikacji strukturę pnid wypełniamy podobnie, a wywołanie funkcji Shell_NotifyIcon będzie wyglądało tak: int res = Shell_NotifyIcon(NIM_MODIFY, &pnid); Kiedy chcemy usunąć ikonę, w strukturze pnid wystarczy wypełnić pola cbSize, hWnd, uID i wywołać funkcje Shell_NotifyIcon z parametrem NIM_DELETE, czyli: int res=Shell_NotifyIcon(NIM_DELETE, &pnid); W przypadku niejasności proszę przejrzeć źródła programu str lub pisać na e-mail. Autorem tekstu jest: Tomasz Urbaniak |