Resizen nur vertikal erlauben
-
Hallo,
ich habe eine CDialog basierte App. Ich möchte nur vertikales Resizen erlauben - aber wie geht das? WM_RESIZE kommt ja nachdem das Resizen erfolgt ist, das geht also nicht.
vielen Dank für Anrworten.
F.
-
Hi!
So ein Beispiel (selber nicht getestet):CRect rect;
GetWindowRect(rect);
if(rect.Width() > m_lFesteBreite)
{
rect.right = rect.left + m_lFesteBreite;
MoveWindow(rect);
}[ Dieser Beitrag wurde am 18.09.2002 um 15:10 Uhr von Laie editiert. ]
-
Der Code muss etwas verändert werden:
CRect rect; GetWindowRect(rect); if(rect.Width() != m_lFesteBreite) // ÄNDERUNG: Hier '!=' anstatt '>' { rect.right = rect.left + m_lFesteBreite; MoveWindow(rect); }
Das ganze muss jetzt nur noch in WM_SIZE eingefügt werden...
-
Geht viel einfacher: OnGetMinMaxInfo (WM_GETMINMAXINFO)
Dort ptMinTrackSize.y & ptMaxTrackSize.y auf den gleichen Wert setzen
-
Ja, stimmt, natürlich
-
[ Dieser Beitrag wurde am 18.09.2002 um 15:53 Uhr von Laie editiert. ]
-
Ja, vielen Dank, datt klappt...
Allerdings muss bei nur vertikalem Resizen natürlich lpMMI->ptMaxTrackSize.x = lpMMI->ptMinTrackSize.x sein, nicht y.Aber: wie kann ich jetzt diesen blöden horizontal Resizen Cursor beseitigen, wenn ich auf den Rand gehe?
Danke F.
-
Schau dir mal CWnd::OnNcHitTest an
-
Danke nochmals für die Hilfe. Auch das klappt.