Pisanie programów na zamówienie

Pisanie na zamówienie Pisanie programów na zamówienie, stron www itp. Kilka programów do sciągnięcia Artykuły na tematy programowania Strona główna

Ikona w systray-u


Funkcja 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

Strona główna | Artykuły na temat programowania | Programy do ściągnięcia | Pisanie programów na zamówienie
Eurohaft - haft komputerowy