首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE -当使用菜单时,并不总是成对的

WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE -当使用菜单时,并不总是成对的
EN

Stack Overflow用户
提问于 2009-12-01 05:23:39
回答 3查看 5.4K关注 0票数 6

为了防止应用程序在用户移动窗口时更改窗口内容,我捕获消息WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE,并在消息之间暂停应用程序。然而,有时我会收到WM_ENTERSIZEMOVE,但根本没有WM_EXITSIZEMOVE。其中一个例子是:

  • 打开窗口菜单
  • 单击Size
  • 不调整窗口大小,而是单击窗口

注意,该窗口从未收到任何WM_EXITSIZEMOVE

在检查它的工作原理时,我还检查了Microsoft DirectX示例,并注意到了同样的问题。在遵循上面的repro步骤之后,示例应用程序看起来是冻结的(我刚刚使用了BasicHLSL示例,从2009年3月开始使用它)。

期望应用程序如何对此作出响应?是否有其他条件可以终止“移动或调整模态循环”?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-01 06:00:36

作为一个临时的解决办法,每当我收到WM_ACTIVATE消息时,我就取消暂停应用程序。这似乎解决了这一特殊情况(您可以通过再次激活它来恢复应用程序),而且似乎没有破坏任何东西。

不过,这样的解决方案对我来说很难闻。我更愿意理解它应该如何工作,而不是仅仅依靠有限的测试。

票数 0
EN

Stack Overflow用户

发布于 2010-11-20 20:10:29

我知道这已经很晚了,但它可能仍然对你有帮助--而且它可能会帮助那些在搜索中找到它的人,就像我做的那样。

在您提到的情况下,当调整大小被“取消”时,似乎会发送WM_CAPTURECHANGED消息。经过广泛的测试后,这似乎总是在WM_EXITSIZEMOVE是(或者应该是!)之前发送的,并且在WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE之间没有其他阶段。

WM_CAPTURECHANGED消息也是在其他不同的时间发送的,所以只有在发送了WM_ENTERSIZEMOVE消息时才应该对此做出反应,但是下面的WM_EXITSIZEMOVE没有。

票数 5
EN

Stack Overflow用户

发布于 2009-12-01 12:07:23

每次完成调整大小操作时,您都应该得到WM_SIZE消息。在调整大小时,您将得到WM_SIZING消息。

也许你也可以用这些来解除你的应用程序的暂停?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1826165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文