最小化或恢复时没有 WM_SIZE 消息
根据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? 除此之外,还有其他消息表明恢复或最小化完成吗? 我的意思是,在系统中,大多数时候,都有动画来显示最小化/恢复过程。我需要一条消息或事件来让应用程序知道恢复时动画已完成。
谢谢!
威廉·L.
According to MSDN, WM_SIZE should be sent to window when window is minimized or restored.
But my application window, which is WTL CDialogImpl never get WM_SIZE when minimize or restore.
I use spy++ to check on it, I can get WM_SYSCOMMAND, WM_WINDOWPOSCHANING, WM_ACTIVE, WM_ACTIVEAPP etc, but no WM_SIZE.
I checked some other WTL example application, I'm able to get WM_SIZE msg when minimize or restore.
My question is why my WTL CDialogImpl window doesn't receive WM_SIZE?
Besides this, is there any other message to indicate the restore or minimize finish?
I mean, in system, most of time, there is animation to show the minimize/restore process. I need a message or event to let app know the animation is done when restore.
thanks!
William L.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如 doc 窗口通过其 WindowProc 函数接收此消息,因此您不会通过 Spy++ 获取它。
无论如何,在创建、最小化和恢复时,WM_SIZE 消息是在 ATL::CDialogImpl 派生对话框中接收的。
要使用 WTL AppWizard 检查它,请创建一个最小的 WTL 模态对话框应用程序,并为 WM_SIZE 添加消息映射条目和匹配的 OnSize() 成员:
在 OnSize() 中设置一个断点,它将被命中。
您的问题(如果有)在其他地方。
As stated in the doc A window receives this message through its WindowProc function so you will not get it through Spy++.
Anyhow the WM_SIZE message is received in a ATL::CDialogImpl derived dialogs at creation, minimization and restoration.
To check it with the WTL AppWizard create a minimal WTL modal Dialog application and add a message map entry for WM_SIZE and a matching OnSize() member:
Set a breakpoint in OnSize() it will be hit.
Your problem (if any) is elsewhere.