CMainFrame -> immer aktiv und nicht verschiebbar



  • Hallo,
    arbeite unter Visual Studio 6.0 an einer SDI-Anwendung.
    2 Fragen zu CMainFrame:

    1. Wie kann ich es verhindern das man CMainFrame verschieben kann?
    2. Aus meinem CMainFrame werden diverse Dialoge geladen und angezeigt. Sobald ein solcher "aktiv" ist wird die Menüleiste von CMainFrame (File, Info, etc.) nicht mehr aktiv ("grau") dargestellt. Klicke ich auf CMainFrame ist es wieder aktiv und so.....!
    Gibt es eine Möglichkeit CMain Frame, bzw. die Menüleiste immer aktiv dargestellt zu lassen?

    Danke schon mal für Eure Hilfe.

    Gruss
    S.



  • Hi,

    1. Wenn ein Fenster verschoben wird, wird immer eine WM_MOVING-Nachricht versandt, mit der gewünschten neuen Position als Parameter. Du kannst das Verschieben also folgendermaßen unterbinden:

    [cpp]void CMainFrame::OnMoving(UINT fwSide, LPRECT pRect) 
    {
    	CFrameWnd::OnMoving(fwSide, pRect);
    
    	pRect->left = 300;
    	pRect->top = 300;
    	pRect->right = 900;
             pRect->bottom = 700;
    }[/cpp]
    

    Hab jetzt einfach mal irgendwelche fixen Werte genommen, natürlich kannst du auch die Position des Fensters auslesen, und dann die alte Positon einfach als neue Postion festlegen.

    2.Hmm, naja es kann immer nur ein Fenster aktiv sein, das ist dir schon klar? Schau mal in der MSDN nach dem SetFocus() Befehl, der macht genau das, was du manuell durch das "klicken auf das Fenster" machst. Um das Hauptfenster wieder zu aktivieren, musst du nachdem einen Dialog angezeigst folgendes eingeben:

    [cpp]AfxGetApp()->m_pMainWnd->SetFocus();[/cpp]
    

    Gruß
    Brainiac



  • Hi,
    Danke für den Tipp mit der OnMoving-Fkt.
    So kann man das Verschieben verhindern.....! Das funktioniert!

    Wegen dem aktiven CMainFrame....:
    Tja, eigentlich bin ich mir dessen schon bewusst das nur ein Fenster aktiv sein kann. Diese Dialog beinhalten Steuerelemente auf die ich natürlich auch über die Tab-Taste und ähnliches zugreifen möchte. Von daher ist es nicht möglich immer wieder den Focus auf das CMainFrame zu setzen.

    Habe mir eigentlich eher so etwas wie z.B. in Word oder so vorgestellt. Also, CMainFrame immer aktiv und ich kann trotzdem in den Dokumenten (in meinem Fall eben Dialoge) arbeiten. Oder wäre das dann typisch für eine MDI-Anwendung...? 😕

    Gruss
    S.


Anmelden zum Antworten