Когда (и как) выложить дочерние элементы окна Win32 в ответ на изменение размера?
Windows отправляет несколько сообщений при изменении размера окна:
WM_GETMINMAXINFO WM_ENTERSIZEMOVE WM_EXITSIZEMOVE WM_NCCALCSIZE WM_SIZING WM_SIZE WM_WINDOWPOSCHANGING WM_WINDOWPOSCHANGEDи возможно больше.
Если я хотел бы переместить детей, когда мое окно изменено,where а такжеhow я должен сделать это?
Я ищу "лучший" метод, т.е. метод с наименьшим количествомleast flicker.
мойcurrent Метод заключается в том, чтобы выполнить все перестановки внутриWM_NCCALCSIZE
, с помощьюDeferWindowPos
.
Однако я также пытался справиться с этим внутриWM_WINDOWPOSCHANGED
... но независимо от того, где я обращаюсь, кажется, что естьalways по крайней мереone & Quot; момент & Quot; когда окно окрашено в промежуточном состоянии, где размер окна изменился, но его содержимое еще не было изменено.
Еще один эффект я быalso хотел бы избежать: переезд ребенкаafter оно уже переехало. Я не хочу, чтобы пользователь видел, как элемент управления скользит вниз, а затемback из-за моих изменений - у него должно быть как можно меньше переходных эффектов.
Я делаю это правильно? Есть ли лучшее место, где я могу выложить окна детей?