CFormView als Child mit Toolbar



  • Hallo,

    ich habe eine SDI mit mehreren Formviews in Splittern, in einem habe ich eine Toolbar verankert, jetzt ist das Problem, daß die Buttons der Toolbar als disabled dargestellt werden wenn die View nicht 'active' ist aber denoch auf jeden Klick reagieren. Gibt es da Abhilfe? Kann ich verhindern, daß die Buttons disabled werden wenn die View deaktiviert wird?


  • Mod

    Du musst das Command Routing im Frame oder Splitter ändern, dass nur den Active View berücksichtigt.
    OnCmdMsg heißt das Zauberwort.
    Siehe mein Blog:
    http://blog.m-ri.de/index.php/2008/07/01/tipps-tricks-mfc-command-routing-in-komplexen-uis/

    Wenn Du auf einen disableten Toolbar klickst wird der View aktiv nd damit ist der Button dan auch aktiv. Es geht halt so schnell, dass Du menst Du könntest den Button auch deaktiviert anklicken...



  • 😃 👍

    Danke und viele Grüße.



  • So, um die Sache mit den ToolBars zu vereinfachen habe ich die FormViews noch in FrameWnds gepackt, nur habe ich jetzt beim schliessen des MainFrames ein Problem in winfrm.cpp:

    // detect the case that this is the last frame on the document and
    	// shut down with OnCloseDocument instead.
    	if (pDocument != NULL && pDocument->m_bAutoDelete)
    	{
    		BOOL bOtherFrame = FALSE;
    		POSITION pos = pDocument->GetFirstViewPosition(); //hier gibts eine Zugriffsverletzung!!
    		while (pos != NULL)
    		{
    			CView* pView = pDocument->GetNextView(pos);
    

    Das Problem ist anscheinend, daß bereits in CDocument::OnCloseDocument() die Views und das Dokument zerstört werden und C(-Main-)FrameWnd::OnClose() das selbe noch mal versucht. Hab schon versucht CDocument::m_bAutoDelete zu nutzen aber offensichtlich falsch 😉

    Was mich auch ein bisschen irritiert ist, dass in InitInstance das CSingleDocTemplate mit einer View initialisiert wird die aber letztlich nie zu sehen ist, gibt es da eine bessere Varinate als AddDocTemplate?


Anmelden zum Antworten