Fragment Napisano Luty 21, 2019 Autor Zgłoś Udostępnij Napisano Luty 21, 2019 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. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Fragment Napisano Luty 21, 2019 Autor Zgłoś Udostępnij Napisano Luty 21, 2019 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 ;) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Omega Napisano Luty 21, 2019 Zgłoś Udostępnij Napisano Luty 21, 2019 Sprawdzilem i rzeczywiscie masz racje. Zwracam honor. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Randal Napisano Kwiecień 6, 2019 Zgłoś Udostępnij Napisano Kwiecień 6, 2019 andrp wielkie dzieki, prostota i geniusz rozwiazania powala - 2 linijki! PS. tylko nie wiem po co ta funkcja max(), bez tego dziala bez problemu Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Fragment Napisano Kwiecień 17, 2019 Autor Zgłoś Udostępnij Napisano Kwiecień 17, 2019 Rzeczywiście masz rację. Trochę przekombinowałem, a że działało poprawnie to nie zauważyłem że max() jest niepotrzebny. Dzięki. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.