根据MSDN,当窗口最小化或恢复时,应将WM_SIZE发送到窗口。 但是我的应用程序窗口,即WTL CDialogImpl在最小化或恢复时永远不会得到WM_SIZE。
我使用spy ++来检查它,我可以获得WM_SYSCOMMAND,WM_WINDOWPOSCHANING,WM_ACTIVE,WM_ACTIVEAPP等,但没有WM_SIZE。
我检查了一些其他WTL示例应用程序,我可以在最小化或恢复时获得WM_SIZE消息。
我的问题是为什么我的WTL CDialogImpl窗口没有收到WM_SIZE? 除此之外,是否还有其他消息表明还原或最小化完成? 我的意思是,在系统中,大部分时间都有动画来显示最小化/恢复过程。我需要一条消息或事件让app知道动画在恢复时完成。
谢谢!
William L。
答案 0 :(得分:0)
如doc 中所述,窗口通过其WindowProc函数接收此消息,因此您无法通过Spy ++获取此消息。
无论如何,在创建,最小化和恢复的 ATL :: CDialogImpl 派生对话框中都会收到 WM_SIZE 消息。
要使用WTL应用程序向导进行检查,请创建一个最小WTL模式对话框应用程序,并为WM_SIZE和匹配的 OnSize()成员添加消息映射条目:
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;
}
在OnSize()中设置断点,它将被命中。
您的问题(如果有的话)在其他地方。