während PrintPrev offen ist WM_CLOSE. In Mainframe View bestimmen



  • Hallo ich hab das Problem, dass ich gerne verhindern würde, dass man das Programm ausversehen schließen kann während die Druckvorschau angezeigt wird.
    Is diese nicht aktiv muss ich eine Funktion der View aufrufem die prüft ob Änderungen gemacht wurden und evt. zum Speichern auffordert.

    void CMainFrame::OnClose()
    {
    //  if( "GetActiveView()   keine   CMeineView" )
    //      { ... }
    //  else
        if(true==dynamic_cast<CMeineView*>(GetActiveView())->SaveIfChanged())
    		return;
    
        CFrameWnd::OnClose();
    }
    

    kann ich aus dem FrameWindow prüfen ob PrintPrev gerade aktiv ist?
    oder gibt es einen Workaround?

    Gruß Hase


  • Mod

    Verwende einfach CDocument::SetModified und die MFC macht den Rest für Dich!



  • Ok das mit SetModified merk ich mir.
    Um zu prüfen ob Printpreview offen ist hab ich jetzt

    CRuntimeClass *pEFV = RUNTIME_CLASS(CMeineView);
    	if(GetActiveView()->IsKindOf(pEFV))
            //...
    

    verwendet...


  • Mod

    Du bekommst einen Aufruf von CFrameWnd::OnSetPreviewMode. Du kannst also direkt en Flag setzen, wenn PrintPreview anfängt, bzw. aufhört.
    Ansonsten ist der aktive View vom Typ CPreviewView!


Log in to reply