Schliessen eines CView (CFormView) verhindern
-
Hallo
ich wollte eine Messagebox anzeigen wenn der Benutzer das X betätigt.
Hab mal eine PreTranslateMessage in den View eingefügt und warte auf WM_CLOSE
bzw. WM_DESTROY beide kamen nicht.Dann hab ich es in dem ChildFrame versucht doch da kamen die beiden Messages auch nicht.
BOOL CChildFrameTempControlView::PreTranslateMessage(MSG* pMsg) { switch(pMsg->message){ case WM_CLOSE: TRACE("Ich will schliessen\n"); return true; // verwirft den Befehl break; case WM_DESTROY: TRACE("Ich werde zerstört \n"); } return CMDIChildWnd::PreTranslateMessage(pMsg); }Warum funkts dat nicht

-
Du musst die Message WM_SYSCOMMAND mit wParam=SC_CLOSE direkt verarbeiten und nicht an die DefWndProc weiterleiten
-
Danke Rene war ein guter Tip
jetzt verwende ich diesen Code und es klappt
void CChildFrameTempControlView::OnSysCommand( UINT nID, LPARAM lParam ) { BOOL bCallBase = TRUE; if ((nID & 0xFFF0) == SC_CLOSE) if(AfxMessageBox("Schliessen?",MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 )==IDNO) bCallBase = false; if (bCallBase) CMDIChildWnd::OnSysCommand(nID, lParam); }Aber warum bekommt nur der Rahmen die Nachricht und nicht der View? Gehört das X nicht mehr zum View?
-
Meines Wissens nach gehört der Rahmen mit den Schließen-/Minimieren-/Maximieren-Schaltflächen ebensowenig zur View wie die Menü- und Symbolleisten und die Statusleiste.
Gruß, seppelina