我发现SetWindowPos(...hwnd...)
函数在新大小与之前相同时不会生成WM_SIZE消息。但有时我需要SetWindowPos来生成WM_SIZE消息,即使大小没有改变。虽然我可以在SendMessage(hwnd, WM_SIZE...)
之后使用SetWindowPos
,但这是一个糟糕的解决方案,因为它可能会生成两次WM_SIZE。
所以,
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,并且有一个MainOnSize(...)函数可以调整hwndChild的大小。同样,如果调整了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时是创建它,第二次是使用ShowWindow(...)显示它。