当最小化或恢复时,没有WM_SIZE消息

问题描述:

根据MSDN,窗口最小化或恢复时WM_SIZE应发送到窗口。 但是我的应用程序窗口,WTL CDialogImpl在最小化或恢复时永远不会获得WM_SIZE。我使用spy ++来检查它,我可以得到WM_SYSCOMMAND,WM_WINDOWPOSCHANING,WM_ACTIVE,WM_ACTIVEAPP等,但没有WM_SIZE。当最小化或恢复时,没有WM_SIZE消息

我检查了一些其他WTL示例应用程序,我可以在最小化或恢复时获取WM_SIZE msg。

我的问题是为什么我的WTL CDialogImpl窗口没有收到WM_SIZE? 除此之外,是否还有其他消息表明还原或最小化完成? 我的意思是,在系统中,大部分时间都有动画来显示最小化/恢复过程。我需要一条消息或事件让应用程序知道恢复时动画已完成。

谢谢!

威廉·

+1

WM_MOVE,不是WM_SIZE。记录窗口的样式标志。 – 2010-09-22 05:23:11

正如doc一个窗口,通过它的WindowProc函数接收到该消息指出这样你就不会通过间谍得到它++。

无论如何被接收在一个ATL的WM_SIZE消息::在创建,尽量减少和恢复CDialogImpl类衍生的对话框。

为了与WTL应用程序向导检查它创建一个最小的WTL模态对话框应用程序并添加WM_SIZE消息映射项和匹配筛上部分()成员:

BEGIN_MSG_MAP(CMainDlg) 
     MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) 
     MESSAGE_HANDLER(WM_SIZE, OnSize) 
     //... 
    END_MSG_MAP() 
    LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) 
    { 
     return 0; 
    } 

在筛上部分设置断点()它会被击中。

你的问题(如果有的话)在其他地方。