Skocz do zawartości

Odp.


Fragment

Recommended Posts

No niezupełnie. Spróbuj zmienić rozmiar okna za pomocą lewej lub górnej krawędzi okna. Okaże się, że możesz to robić bez ograniczeń. W dokumentacji jest napisane, że WM_SIZING pozwala kontrolować rozmiar, ale także i pozycję okna. Musisz więc sprawdzać wartość wParam, aby wiedzieć którą składową RECT-a musisz nadpisać. Poza tym miałem dziwny efekt. W przyapdku gdy zwracałem 1 po przetworzeniu WM_SIZING, przeważnie nie było żadnego efektu. Dopiero gdy zwróciłem TRUE, działa poprawnie.

Link do komentarza
Udostępnij na innych stronach

Wyjaśniło się. Ponieważ RECT zawiera dane w jednostach całego ekranu, nie możemy przypisywać jego składowym wartości minimalnego rozmiaru, ponieważ one nie są współrzędnymi w jednostkach całego ekranu. Tak więc w sytuacji, gdy okna znajduje się blisko lewego górnego rogu, efekt zablokowania zmniejszania rozmiaru okna jest jakoś widoczny, a w przypadku gdy okna znajduje się na środku ekranu efektu nie ma. W Twoim kodzie jest więc błąd. Powinno być tak:

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

Oczywiście nadal nierozwiązny pozostaje problem użycia lewej i górnej krawędzi okna.

//edit by Piasiu ;)
Ludzie korzystajcie z tego ładnego przycisku Code podczas pisania postu ;)

Link do komentarza
Udostępnij na innych stronach

  • 1 month later...
  • 2 weeks later...

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...