如何强制SetWindowPos生成WM_SIZE消息

时间:2012-12-29 23:14:24

标签: c++ c winapi

我发现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(...)显示它。

0 个答案:

没有答案