Problem mit Minimize und TrayIcon
-
Ich hab mir im FAQ das Thema "TrayIcon" genommen und in mein Programm eingebaut (ist übrigens ein Fehler drin, was später). Klappt auch wunderbar soweit. Beim Klicken auf Minimieren popt ein ICON im Tray auf aber das Programm wird nicht versteckt, sondern Minimiert.
Hier der Code (sollte 1 zu 1 aus dem FAQ sein)
void CT6963CDlg::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_ICON1), IMAGE_ICON, 16, 16, LR_SHARED|LR_DEFAULTCOLOR); lstrcpyn(tnd.szTip, _T("T6963C LC-Display"), sizeof(tnd.szTip)); Shell_NotifyIcon(NIM_ADD, &tnd); ShowWindow(SW_HIDE); }Hier ist ein Fehler im FAQ (glaub ich jedenfalls). ISt kommentiert
LRESULT CT6963CDlg::OnTrayNotification(WPARAM wp, LPARAM lp) { switch (lp) { case WM_LBUTTONUP: ShowWindow(SW_RESTORE); //IM FAQ ist SW_SHOW, funzt aber nicht NOTIFYICONDATA iconData; iconData.cbSize = sizeof(NOTIFYICONDATA); iconData.hWnd = this->GetSafeHwnd(); iconData.uID = 1; return Shell_NotifyIcon(NIM_DELETE, &iconData); break; } return 0; }void CT6963CDlg::OnSysCommand(UINT nID, LPARAM lParam) { switch(nID) { case SC_MINIMIZE: OnMini(); break; case SC_CLOSE: CT6963CDlg::OnClose(); break; default: break; } CDialog::OnSysCommand(nID, lParam); }Wie gesagt ist mein Problem, dass in der Taskleiste noch das Prog zu sehen ist. Wollte aber nur das Tray sichtbar haben wenns minimiert ist. Hab ich was vergessen oder fehlt mir dazu eine Funktion?
Danke
-
Mal nur so aus Verdacht. In der OnSysCommand würde ich mal versuchen bei SC_MINIMIZE den break durch ein return zu ersetzen. Vielleicht liegts da dran.
Gruß Matthias
-
Guter Verdacht. Funktioniert endlich. Danke