Skocz do zawartości

Odp. Minimalny rozmiar okna


Fragment

Recommended Posts

Nie pamiętam dobrze i nie chce mi się teraz sprawdzać, ale czy czasami WM_SIZING nie działa w ten sposób, że podczas zmieniania rozmiaru prostokąt okna możesz zmieniać bez żadnych ograniczeń, a dopiero po zwolnieniu przycisku myszki, okno przyjmuje minimalny rozmiar ? Czy jesteś pewien, że aplikacja, podczas zmieniania rozmiaru okna otrzymuje serię komunikatów WM_SIZING, czy aby nie jest to pojedynczy komunikat pojawiający się dopiero po zwolnieniu przycisku myszki ? Poza tym WM_SIZING operuje na strukturze RECt, co wymaga sprawdzania czy różnica pomiędzy jej składowymi right- left oraz bottom-top nie są mniejsze od naszego rozmiaru minimalnego. Podsumowując, stosowanie WM_GETMINMAINFO wydaje się minimalnie wygodniejsze, a ponadto daje efekt dokładnie taki sam jak wiele aplikacji komercyjnych w odróżnieniu od WM_SIZING.

Link do komentarza
Udostępnij na innych stronach

Jednak sprawdziłem. Rzeczywiście WM_SIZING działa poprawnie. Nie da się jednak ukryć, że jest bardziej upierdliwe w użyciu. Trzeba np. sprawdzać, którą z 4-ech krawędzi używamy do zmiany rozmiaru okna, aby minotorować rozmiar prostokąta okna w strukturze RECT. Przyznaję jednak, że nie jest to duży kłopot. Pozrowienia

Link do komentarza
Udostępnij na innych stronach

Wcale nie trzeba sprawdzac. Spojrz na to (delphi):

if msg=WM_SIZING then begin 
 R:=POINTER(LParam); //zmienna R to PRect, czyli zwykły rect, ale jako wskaźnik 
 If R^.bottom<=MinCY then R^.bottom:=MinCY; 
   If R^.Right<=MinCX then R^.right:=MinCX; 
   Result:=1; //w tym komunikacie należy zawsze zwrócić wartość true dla procedury okna 
end; 

Sprawdzasz tylko bottom i right recta, ktory jest wskazany w pamieci przez lparam. I jezeli bottom i right jest mniejsze lub rowna minimalnej wielkosci, jaka nas intersuje to caly czas przypisujemy jej wlasnie ta minimalna wiekszosc. Powyzszy kod to obrazuje.

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...