FrameWindow an neuen View anpassen



  • Hallo zusammen,

    ich wechsle in meiner Anwendung zwischen zwei verschiedenen Views hin und her. Beide sind von CFormView abgeleitet. Das wechseln klappt auch, das Problem ist nur, das der 2. View größer als der erste ist. Also wollte ich beim View-Wechsel auch gleichzeitig die Größe des MainFrames anpassen (Scroll-Bars will ich nicht).

    Mein Ansatz ist folgender:

    //in CMainFrame::SwitchView()
    
    CRect rect;
    GetWindowRect(&rect);
    CSize size = static_cast<CFormView*>(pNewView)->GetTotalSize();
    MoveWindow(rect.left, rect.top, size.cx, size.cy);
    

    Das Fenster ändert daraufhin sogar seine Größe, jedoch nicht richtig. Ich habe schon herausgefunden, woran das liegt: GetTotalSize liefert die Größe in logischen Einheiten und nicht in Pixeln. MoveWindow erwartet allerdings Pixel.
    Hab bis jetzt vergebens nach einer Funktion zum umrechnen von logical Units in Pixel gesucht...

    Gibt es eine solche Funktion? Oder hat jemand eine Idee wie ich das ganze anders lösen kann?

    Danke schon mal,

    Gruß Brainiac


  • Mod

    Verwende CFormView::ResizeParentToFit



  • 1000 Dank an Martin!!! 😃 👍

    Da suche ich ewig nach passenden Funktionen und dabei gibts schon eine Funktion die genau das macht was ich will. Da war ich wohl mal wieder blind... 😉

    Aber eine kleine Korrektur: ResizeParentToFit() ist kein Element von CFormView sondern von CScrollView (von dem ja CFormView abgeleitet ist). Deswegen hab ichs auch nicht gefunden... 😞


Anmelden zum Antworten