Tray-Icon erstellen und Kontextmenü anzeigen
-
Was ist ein Tray-Icon?
Ein Tray-Icon ist ein Icon was man in der Task-Leiste rechts neben der Uhr sieht. So ein Icon ist vielseitig nutzbar und findet insbesondere bei Anwendungen, die im Hintergrund laufen, Verwendung.Wie mache ich ein Tray-Icon
{ //Create Tray Icon char szTip[64] = "Tray-Icon Tutorial"; //Exemplarisch nidTrayIcon.cbSize = sizeof(nidTrayIcon); nidTrayIcon.hIcon = hProgramIcon; //Exemplarisch nidTrayIcon.hWnd = hMainWindow; //Exemplarisch, HWND des Fensters an dessen MessageLoop die Nachricht geschickt werden soll nidTrayIcon.uCallbackMessage = (WM_USER + 1); //Exemplarisch nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; //Exemplarisch nidTrayIcon.uID = 0x0200; //Exemplarisch strcpy(nidTrayIcon.szTip, szTip); nidTrayIcon.szTip[strlen(szTip)] = '\0'; Shell_NotifyIcon(NIM_ADD, &nidTrayIcon); }
Dabei muss nidTrayIcon eine globale Variable des Typs NOTIFYICONDATA sein. Mit uflags stellt man ein, welche Parameter korrekt gesetzt wurden, so ist es z.B. möglich ein Icon, ohne ToolTip-Text zu erzeugen.
Wie entferne ich das Icon?
Shell_NotifyIcon(NIM_DELETE, &nidTrayIcon);
Wie aktualisiere ich das Icon?
Shell_NotifyIcon(NIM_MODIFY, &nidTrayIcon);
Wie fange ich in der MessageLoop Nachrichten ab?
long CALLBACK WndProc(HWND hWnd, UINT nMsg, UINT wParam, LONG lParam) { switch(nMsg) { case (WM_USER + 1): { switch(lParam) { case WM_RBUTTONUP: { // . // . // . } } return 0; } // . // . // . default: return DefWindowProc(hWnd, nMsg, wParam, lParam); } }
Wie zeige ich ein Kontextmenü an ?
Siehe auch: http://support.microsoft.com/default.aspx?scid=kb;EN-US;q135788long CALLBACK WndProc(HWND hWnd, UINT nMsg, UINT wParam, LONG lParam) { POINT pt; switch(nMsg) { case (WM_USER + 1): { switch(lParam) { case WM_LBUTTONUP: { SetForegroundWindow(hWnd); GetCursorPos(&pt); TrackPopupMenu(HandleEinesSubmenus, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, NULL); PostMessage(hWnd, WM_NULL, 0, 0); } } return 0; } // . // . // . default: return DefWindowProc(hWnd, nMsg, wParam, lParam); } }
[ Dieser Beitrag wurde am 05.11.2001 um 17:26 Uhr von Loggy editiert. ]
[ Dieser Beitrag wurde am 26.05.2002 um 21:40 Uhr von geeky editiert. ]