Hallo,
ich möchte, dass der Benutzer das Fenster nur prozentual vergrößern bzw. verkleinern kann. D. h. Wenn er z. B. den rechten Fensterrand festhält und das Fenster schmäler zieht, soll auch automatisch die Fensterhöhe verhältnismäßig kleiner werden.
Habe versucht die OnSize- und die OnSizing-Methode zu überschreiben, aber ich komme momentan nicht weiter.
In der OnSize Methode hat die Variable fwSide bei mir immer den Wert 0. Also merke ich mir schon in der OnSizing-Methode mit Hilfe der Membervariable m_nKante, an welcher Kante der Benutzer die Fenstergröße verändern will:
Danach wird ja die OnSize Methode aufgerufen, wenn der Benutzer die Größe verändert hat.
Nehmen wir mal an, der Benutzer hält das Fenster an der rechten (m_nKante = 2) oder
linken Kante (m_nKante = 1) fest. D. h. er hat das Fenster in der Breite verändert. Abhängig von der neuen Client-Breite habe ich dann die neue Höhe cy berechnet, die der Client-Bereich haben muss, damit das Verhältnis Breite zu Höhe noch das gleiche bleibt.
(In den Variablen m_nClientbreite und m_nClienthoehe ist die alte Breite und Höhe des Clientbereichs gespeichert)
Welche Methode muss ich denn nun aufrufen um die Höhe des Fensters zu setzen? Wenn ich SetWindowPos() aufrufe tut sich gar nichts.
Danke Euch.
ich möchte, dass der Benutzer das Fenster nur prozentual vergrößern bzw. verkleinern kann. D. h. Wenn er z. B. den rechten Fensterrand festhält und das Fenster schmäler zieht, soll auch automatisch die Fensterhöhe verhältnismäßig kleiner werden.
Habe versucht die OnSize- und die OnSizing-Methode zu überschreiben, aber ich komme momentan nicht weiter.
In der OnSize Methode hat die Variable fwSide bei mir immer den Wert 0. Also merke ich mir schon in der OnSizing-Methode mit Hilfe der Membervariable m_nKante, an welcher Kante der Benutzer die Fenstergröße verändern will:
Code:
void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) {
this->m_nKante = fwSide;
CFrameWnd::OnSizing(fwSide, pRect);
}
Danach wird ja die OnSize Methode aufgerufen, wenn der Benutzer die Größe verändert hat.
Nehmen wir mal an, der Benutzer hält das Fenster an der rechten (m_nKante = 2) oder
linken Kante (m_nKante = 1) fest. D. h. er hat das Fenster in der Breite verändert. Abhängig von der neuen Client-Breite habe ich dann die neue Höhe cy berechnet, die der Client-Bereich haben muss, damit das Verhältnis Breite zu Höhe noch das gleiche bleibt.
(In den Variablen m_nClientbreite und m_nClienthoehe ist die alte Breite und Höhe des Clientbereichs gespeichert)
Welche Methode muss ich denn nun aufrufen um die Höhe des Fensters zu setzen? Wenn ich SetWindowPos() aufrufe tut sich gar nichts.
Code:
void CMainFrame::OnSize(UINT fwSide, int cx, int cy) {
double skalierung = (double)this->m_nClientbreite / this->m_nClienthoehe;
if (this->m_nKante == 1 || this->m_nKante == 2) {
cy = cx / skalierung;
this->m_nClientbreite = cx;
this->m_nClienthoehe = cy;
?
}
}
Danke Euch.