SetWindowPos(...hwnd...)
新しいサイズが以前と同じである場合、関数はWM_SIZEメッセージを生成しないことがわかりました。ただし、サイズが変更されていない場合でも、WM_SIZEメッセージを生成するためにSetWindowPosが必要になる場合があります。SendMessage(hwnd, WM_SIZE...)
の後に使用できますSetWindowPos
が、WM_SIZEが2回生成される可能性があるため、これは悪い解決策です。
それで、
Is any flag for SetWindowPos or any similar functions so a WM_SIZE message is always generated?
ps:
メインウィンドウhwndMain、子ウィンドウhwndChild、およびhwndChildの子ウィンドウhwndChild2があります。hwndMainのサイズが変更されると、WM_SIZEを受け取り、hwndChildのサイズを変更するMainOnSize(...)関数があります。同様に、hwndChildのサイズが変更されると、WM_SIZEを受け取り、hwndChild2のサイズを変更するChildOnSize(...)関数があります。
ただし、場合があります。hwndMainとhwndChildが作成された後、hwndChild2は作成されないため、hwndMainはWM_SIZEを受け取るため、hwndMainとhwndChildのサイズが変更されます。hwndChild2が作成された後も、hwndMainはWM_SIZEを受信するため(備考を参照)、MainOnSizeを呼び出してhwndChildのサイズを変更します。ただし、hwndChildのサイズは変更されないため、WM_SIZEは生成されず、ChildOnsize()も呼び出されないため、hwndChild2のサイズは変更されません。
述べる:
hwndMainが最初にWM_SIZEを受信するのは作成時であり、2回目はShowWindow(...)を使用して表示されるときです。