Quando (e como) organizar os filhos de uma janela do Win32 em resposta a um redimensionamento?
O Windows envia várias mensagens quando uma janela é redimensionada:
WM_GETMINMAXINFOWM_ENTERSIZEMOVEWM_EXITSIZEMOVEWM_NCCALCSIZEWM_SIZINGWM_SIZEWM_WINDOWPOSCHANGINGWM_WINDOWPOSCHANGEDe possivelmente mais.
Se eu quiser reposicionar as crianças quando minha janela for redimensionada,Onde ecomo devo fazer isso?
Eu estou procurando o "melhor" método - ou seja, o método com o menor número de pegadas emenos cintilação.
Minhasatual método é realizar todo o reposicionamento dentroWM_NCCALCSIZE
usandoDeferWindowPos
.
No entanto, eu também tentei lidar com isso dentroWM_WINDOWPOSCHANGED
... mas não importa onde eu lide com isso, parece que hásempre finalmente1 "momento" quando a janela é pintada em um estado intermediário, onde o tamanho da janela mudou, mas seu conteúdo ainda não foi redimensionado.
Outro efeito que eu fariaAlém disso gostaria de evitar: mover uma criançadepois de já se moveu. Não quero que o usuário veja um controle deslizando para baixo e, em seguida,de volta por causa da minha mudança - deve ter o mínimo de efeitos transitórios possíveis.
Estou fazendo isso corretamente? Existe um lugar melhor para colocar as crianças da janela?