Kiedy (i jak) rozłożyć dzieci okna Win32 w odpowiedzi na zmianę rozmiaru?

System Windows wysyła kilka wiadomości, gdy zmienia się rozmiar okna:

WM_GETMINMAXINFOWM_ENTERSIZEMOVEWM_EXITSIZEMOVEWM_NCCALCSIZEWM_SIZINGWM_SIZEWM_WINDOWPOSCHANGINGWM_WINDOWPOSCHANGED

i prawdopodobnie więcej.

Jeśli chciałbym zmienić położenie dzieci, gdy moje okno zostanie zmienione,gdzie iw jaki sposób powinienem to zrobić?
Szukam „najlepszej” metody - tj. Metody z najmniejszą ilością gotcha inajmniej migotać.

Mójobecny Metoda polega na wykonaniu wszystkich zmian położenia wewnątrzWM_NCCALCSIZE, za pomocąDeferWindowPos.
Jednak próbowałem też obsługiwać to w środkuWM_WINDOWPOSCHANGED... ale bez względu na to, gdzie się tym zajmuję, wygląda na to, że tak jestzawsze przynajmniejjeden „moment”, gdy okno jest pomalowane w stanie pośrednim, w którym zmienił się rozmiar okna, ale jego zawartość nie została jeszcze zmieniona.

Jeszcze jeden efektrównież lubię unikać: przeprowadzania dzieckapo już się przeniósł. Nie chcę, aby użytkownik widział kontrolkę przesuwającą się w dół, a następniez powrotem z powodu mojej zmiany - powinno mieć jak najmniej przejściowych efektów.

Czy robię to poprawnie? Czy jest lepsze miejsce, w którym mogę rozłożyć dzieci okna?

questionAnswers(1)

yourAnswerToTheQuestion