Steuerelementgröße an Child-Fenster anpassen



  • Ich möchte in das Child-Fenster einer MDI-Anwendung ein (ActiveX-)Steuerelement (MS FlexGridControl) bringen, das sich immer der Größe des Child-Fensters anpasst, sodass dies immer vollständig ausgefüllt ist (wie z.B. bei Excel).



  • Guckst du hier in FAQ:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39118
    (der weiterführende Link und da ganz unten)
    Oder du schreibst das selber, z.B. mit CWnd::GetClientRect die Grösse vom Child-Dialog bestimmen und dann mit MoveWindow(...) das FlexGrid anpassen.



  • Danke für den Tipp! 🙂

    Ein Problem bleibt aber noch bestehen: Das FlexGrid ist ja selbst auf einer Dialogressource und könnte ja nur so gros werden wie Dialogressource ist. Daher suche ich nach einem Weg um diese auch der Größe vom Child-Fenster anzupassen.



  • isabeau schrieb:

    Oder du schreibst das selber, z.B. mit CWnd::GetClientRect die Grösse vom Child-Dialog bestimmen und dann mit MoveWindow(...) das FlexGrid anpassen.

    Ist das das Problem ?



  • Natürlich, ich möchte das FlexGrid der Größe des Child-Fensters anpassen. Aber, meine Frage war, geht das überhaupt, ohne die Größe der Dialogressource zu verändern. Das FlexGrid ist ja sozusagen in ihr gefangen. 😕



  • 💡

    Könnte man diese ganze Problematik nicht einfach umgehen, indem man das FlexGrid nicht mithilfe von CFormView einbindet sondern alleine.
    Es besteht ja die Möglichkeit beim Assistenten die Ansichtsklasse zu wählen (in meinem Fall war es CFormView). Es gibt da aber auch z.B. CeditView, wodurch sich das ganze Child-Fenster wie eine riesige Textbox verhält. Ginge so etwas auch mit FlexGrid, denn dann bräuchte ich mich anscheinend nicht mehr mit der Größe herumärgern?



  • Noch mal danke für die Hilfe, das Problem ist nun gelöst. 😃
    Anscheinend spielt die Größe der Dialogressource keine Rolle und wirkt sich auch nicht einschränkend auf das FlexGrid aus. Der Quelltext sieht nun so aus:

    void CMyAppView::OnPaint() 
    {
        CPaintDC dc(this);
    
        if(GetSafeHwnd())
        {
            CRect rect;
            GetClientRect(rect);
    
            m_ctlFGrid.MoveWindow(rect);
        }
    }
    

Anmelden zum Antworten