TrayIcon aus dem Faq
-
Ich möchte diesen Code verwenden um mir einen TrayIcon zu erstellen, nur hab ich jetzt 2 Fragen.
1. Was ist IDI_MIN in diesem Code
2. Wo finde ich in meinem MFc /dialogfeld die funktion für das minimize button.// CDeinDialog.cpp #define WM_NOTIFICATION (WM_APP+100) BEGIN_MESSAGE_MAP(CDeinDlg, CDialog) ON_MESSAGE(WM_NOTIFICATION, OnTrayNotification) END_MESSAGE_MAP() // CDeinDlg.h // Generierte Message-Map-Funktionen //{{AFX_MSG(CDeinDlg) afx_msg LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam); //}}AFX_MSG dann kommt der aufruf, wo du das Progg minimieren willst also button oder so! void CDeinDlg::OnMini() { NOTIFYICONDATA tnd; ZeroMemory(&tnd, sizeof (NOTIFYICONDATA)); tnd.cbSize = sizeof (NOTIFYICONDATA); tnd.hWnd = this ->m_hWnd; tnd.uID = 1; tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; tnd.uCallbackMessage = WM_NOTIFICATION; tnd.hIcon = (HICON) LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_MIN),IMAGE_ICON, 16,16,LR_SHARED|LR_DEFAULTCOLOR); tnd.szTip[64]='\0'; lstrcpyn(tnd.szTip,"Proggname",sizeof(tnd.szTip)); Shell_NotifyIcon(NIM_ADD,&tnd); ShowWindow(SW_HIDE); } so fehlt nur noch, das du das Progg ja auch wieder haben willst (hier beispiel linke maustastendruck): LRESULT CDeinDlg::OnTrayNotification(WPARAM wp, LPARAM lp) { switch (lp) { case WM_LBUTTONUP: ShowWindow(SW_SHOW); NOTIFYICONDATA iconData; iconData.cbSize = sizeof(NOTIFYICONDATA); iconData.hWnd = this->GetSafeHwnd(); iconData.uID = 1; return Shell_NotifyIcon(NIM_DELETE,&iconData); } return 0; }
Mfg Skalariak
-
- IDI_MIN ist der Name vom Icon der in der Task dann angezeigt werden soll
- Die Message, die man bekommt, ist WM_SYSCOMMAND mit SC_MINIMIZE oder SC_MAXIMIZE als Parameter.
-
Ja, schlagt mich tod und erklärt mich für dumm, aber:
Wie deklarier ich denn IDI_MIN?
-
Du fügst als Resource ein ICON ein und benennst es so.