Minimale Fenstergröße nicht unterschreiten...



  • Hallo,

    dies ist mein bisheriger Code:

    void CMiHaHomeIRCView::OnSize(UINT nType, int cx, int cy) 
    {
    	CFormView::OnSize(nType, cx, cy);
    	if(GetSafeHwnd() == 0)
    		return;
    
    	ShowScrollBar(SB_BOTH, false); 
    
    	CStatic* pStatic1 = static_cast<CStatic*>(CFormView::GetDlgItem(IDC_STATIC1));
    	CStatic* pStatic2 = static_cast<CStatic*>(CFormView::GetDlgItem(IDC_STATIC2));
    	CRichEditCtrl* pRichEdit1 = static_cast<CRichEditCtrl*>(CFormView::GetDlgItem(IDC_RICHEDIT1));
    	CRichEditCtrl* pRichEdit2 = static_cast<CRichEditCtrl*>(CFormView::GetDlgItem(IDC_RICHEDIT2));
    	CRichEditCtrl* pRichEdit3 = static_cast<CRichEditCtrl*>(CFormView::GetDlgItem(IDC_RICHEDIT3));
    	CButton* pButton = static_cast<CButton*>(CFormView::GetDlgItem(IDC_BUTTON1));
    
    	if(pStatic1 != 0 && pStatic2 != 0 && pRichEdit1 != 0 && pRichEdit2 != 0 && pRichEdit3 != 0 && pButton != 0)
    	{
    		pStatic1->MoveWindow(7 + 10, 7, 200, 17);
    		pStatic2->MoveWindow(wRect.right * 7/10 - 7 + 10, 7, 100, 17);
    		pRichEdit1->MoveWindow(wRect.right * 7/10 - 7 + 10, 24, wRect.right - wRect.right * 7/10 - 20, wRect.bottom - 24 - 7 - 17 - 20);
    		pRichEdit2->MoveWindow(7 + 10, 24, wRect.right * 7/10 - 7 - 7, wRect.bottom - 24 - 7 - 17 - 20);
    		pRichEdit3->MoveWindow(7 + 10, wRect.bottom - 17 - 7 - 20, wRect.right - 7 - 100 - 10, 20);
    		pButton->MoveWindow(wRect.right - 100, wRect.bottom - 17 - 7 - 20, 80, 20);
    	}
    }
    

    Er macht die Fenstergröße genau so, wie ich es haben will.

    Gehts nicht leichter? Ich werde bald ne ganze Stange an Buttons platzieren...

    Man kann das Fenster bis auf garnix zusammenschrumpfen, es soll eine Minimalgröße geben, wie kriege ich das bewerkstelligt?

    MfG MAV



    1. Es gibt da diverse Hilfsklassen (-> codeproject.com)
    2. Ganz einfach: Prüfen ob das Fensterhöhe/-breite kleiner ist als erlaubt und gegebenenfalls auf Minimalgrößen setzen.


  • Gut dann anders gefragt:
    Wie setze ich die Fenstergröße?

    Immer wenn ich das versuche macht er anscheinend nur dei Anezige kleiner und an der Stelle zeicznet er dann nix, äh, also welche FUnktion? ^^

    MfG MAV





  • Also ich muss sagen zu WM_GETMINMAXINFO oder OnGetMinMaxInfo habe ich mir schon einmal was angeschaut.
    Ich gewinne den ersten Eindruck, dass man damit nur die minimalen Daten bekommt aber wie unterdrücke ich die jetzt?
    Wenn ich da mit MoveWindow ankomme b´ringt es nichts, das verkleinert zwar den Sichtbereich, auf dem gezeichnet wird, nicht aber das Fenster selber, sodass dann ein Bereich da ist, der garnicht neugezeichnet wird, Ergenis:
    Alles was man auch mit anderen Fenstern drübermalt bleibt da so. 😞

    Desweiteren weiß ich jetzt leider auch nicht wie ich WM_GETMINMAXINFO in der MFC abfragen soll, denn bei den Nachrichtenfunktionen oder Ereignissen finde ich eine solche Konstante nicht. 😞

    Kann mir jemand ein wenig abhelfen?

    MfG MAV



  • Hi!
    Dann füg folgendes in die Funktion ein:

    lpMMI->ptMaxTrackSize.x = 600;
    lpMMI->ptMaxTrackSize.y = 600;
    lpMMI->ptMinTrackSize.x = 300;
    lpMMI->ptMinTrackSize.y = 300;
    

    mfg



  • Achja 😉
    WM_GETMINMAXINFO musst du nicht händish einfügen - das macht der Klassenassi. Also CMianFrame auswählen und nach WM_GETMINMAXINFO suchen -> Doppelklick -> Code bearbeiten -> Source einfügen 😉

    mfg



  • Hallo.

    Danke es klappt nun wunderbar. 🙂

    Und überhaupt würde ich gerne ein paar Eigenschaften des Fensters verändern.
    Wie soll ich das machen, geht das? 🙂

    Danke schonmal sehr!

    MfG MAV



  • Mis2com schrieb:

    Und überhaupt würde ich gerne ein paar Eigenschaften des Fensters verändern.

    Na kommt drauf an was du darunter verstehst :p
    mfg



  • Der Rahmen soll z.B. dünner oder so sein!

    Mit welchem Code erschaffe ich ein neues Fenster für meine MDI Anwendung? 🙂

    MfG MAV



  • Hi!
    Das mit der MDI hab ich dir im anderen Thread gepostet und das mit dem Rahmen bin ich teilweise überfragt. Würde mal www.codeproject befragen. Da gabs so sacehn wie skins und so Scahen

    mfg



  • OK, bleibt nurnoch die Frage, wie ich jetzt die Daten, die mir der Dialog gibt, an das Formular weitergeben kann. 🙂

    MfG MAV


Anmelden zum Antworten