Größenänderung von Steuerelementen in MFC
Ich Schreibe ein Programm, das zwei Bereiche (über CSplitter
), aber ich habe Probleme, herauszufinden, aus, um die Größe der Steuerelemente in jedem frame. Für Einfachheit, kann mir jemand sagen, wie ich es tun würde, für einen basic frame mit einem einzigen CEdit
Kontrolle?
Ich bin mir ziemlich sicher, dass es hat zu tun mit den CEdit::OnSize()
- Funktion... Aber ich bin nicht wirklich von der Stelle zu kommen...
Dank! 🙂
InformationsquelleAutor der Frage Konrad | 2008-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr Rahmen erhält eine OnSize-Nachricht wird geben Sie die neue Breite und Höhe - Sie können rufen Sie einfach die CEdit SetWindowPos-Methode und übergeben Sie diese Werte.
Übernehmen CMyPane ist Ihr splitter Bereich, und es enthält ein CEdit-Sie erstellt im OnCreate aufgerufen m_wndEdit:
InformationsquelleAutor der Antwort Rob
Fenster erhält WM_SIZE-Nachricht (die Verarbeitung OnSize-handler in MFC) sofort, nachdem es vergrößert wurde, so CEdit::OnSize ist nicht, was Sie suchen.
Sollten Sie OnSize-handler in deiner frame-Klasse und innerhalb dieses handlers als Rob hingewiesen erhalten Sie Breite und Höhe der client-area des Sie Rahmen, dann sollten Sie den code hinzufügen, die Größe und position des Steuerelements.
Sowas
InformationsquelleAutor der Antwort Serge
GetDlgItem(IDC_your_slidebar)->SetWindowPos(...) //eigentlich kann man verschieben ,vergrößern, verkleinern...usw
InformationsquelleAutor der Antwort Eddie
SetWindowPos ist ein wenig heavy duty für diesen Zweck. MoveWindow hat nur, was benötigt wird.
InformationsquelleAutor der Antwort ravenspoint
Andere haben darauf hingewiesen, dass WM_SIZE ist die Nachricht, die Sie behandeln soll, und die Größe der untergeordneten Steuerelemente an diesem Punkt. WM_SIZE wird gesendet, nachdem die Größenänderung abgeschlossen ist.
Vielleicht wollen Sie auch zu handhaben, die WM_SIZING message, die gesendet wird, während die Größe im Gange ist. Dies wird Ihnen ermöglichen, aktiv die Größe der child-windows, während der Benutzer noch die Maus ziehen. Seine nicht unbedingt notwendig, um WM_SIZING, aber es kann eine bessere Benutzererfahrung.
InformationsquelleAutor der Antwort Brian Ensink
Benutze ich CResize Klasse von CodeGuru, um die Größe aller Steuerelemente automatisch. Sie erzählen, wie Sie jedes Steuerelement in der Größe verändert werden und es macht den job für Sie.
Die Größe Paradigma ist, um anzugeben, wie viel jeder Seite ein Steuerelement verschoben wird, wenn der dialog in der Größe verändert.
Sehr praktisch, wenn Sie eine große Anzahl von Dialogfeld-Steuerelemente.
Quellcode
InformationsquelleAutor der Antwort Sergey Kornilov