2

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(...)を使用して表示されるときです。

4

0 に答える 0