Tray nach einem klick auf das X
-
So, ich hab das jetzt rausgenommen wie du gesagt hast, aber nun erhalte ich folgende meldung:
error C4716: 'CTestDlg::DestroyWindow' : must return a value
-
gibt es auch so ne funktion für minimieren? Würde auch reichen.
-
mach return 1 hin ... kann ja net falsch sein
-
WM_SHOWWINDOW is die message die du bekomsmt wenn die fenster minnimiert oda maximiert wird ...
-
wenn ich das da reinsetze, wird das Programm gleich beim start in den Tray gepackt und kakkt anschließend ab. (Mann voll der Rap lol)
-
DestroyWindow ist da vollkommen falsch!
Wieso nimmt Ihr nicht einfach die ON_Close notify und überschreibt die?
Und auf jeden fall sollte das: CDialog::DestroyWindow(); unbedingt raus.
-
und wo finde ich dieses "ON_close" genau?
-
Ich geb dir mal n Stückel von meinen Src:
void CMailChkDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) { CDialog::OnActivate(nState, pWndOther, bMinimized); if(bMinimized) { NOTIFYICONDATA nid; nid.cbSize=sizeof(nid); nid.hIcon=m_hIcon; nid.hWnd=m_hWnd; lstrcpy(nid.szTip,"GMX - Mail Checker"); nid.uCallbackMessage=WM_TRAYNOTIFY; nid.uFlags=NIF_MESSAGE|NIF_TIP|NIF_ICON; nid.uID=1; Shell_NotifyIcon(NIM_ADD,&nid); ShowWindow(SW_HIDE); } } LRESULT CMailChkDlg::OnTrayNotify(WPARAM wparam,LPARAM lparam) { switch(lparam) { case WM_LBUTTONUP: { NOTIFYICONDATA nid; nid.cbSize=sizeof(nid); nid.hWnd=m_hWnd; nid.uID=1; Shell_NotifyIcon(NIM_DELETE,&nid); ShowWindow(SW_SHOWNORMAL); SetForegroundWindow(); break; } } return 0; }
-
'OnActivate' : member function not declared in 'CTestDlg'
-
Original erstellt von Hurrican:
WM_SHOWWINDOW is die message die du bekomsmt wenn die fenster minnimiert oda maximiert wird ...FALSCH! Steht extra noch als Anmerkung in der MSDN, wenn ich mich richtig entsinne. Die Message, die man bekommt, ist WM_SYSCOMMAND mit SC_MINIMIZE oder SC_MAXIMIZE als lParam oder wParam (weiß ich nicht mehr). Aber das ist ja auch nicht das Problem. Natürlich muss man auf WM_CLOSE reagieren. Ich kenne mich in der MFC nicht so gut aus, aber wenn es CDialog::DestroyWindow() gibt zum Überschreiben, gibt's dann nicht auch CDialog::CloseWindow() oder so?