【问题标题】:Windows: Mouse Down on Window DecorationWindows:鼠标按下窗口装饰
【发布时间】:2010-09-19 08:13:47
【问题描述】:

在几乎所有 Windows 应用程序中,我注意到在非客户区按住鼠标按钮会导致绘制停止。为什么需要这个?

例如,我有一个 Managed Direct 3D 应用程序,它显示一个旋转的立方体。如果我将指针放在标题栏上并按住鼠标按钮,即使我没有将任何此类条件编码到我的循环中,立方体也会停止旋转。

为什么绘画停止了?有什么好处?最重要的是,我该如何解决这个问题?

【问题讨论】:

  • 我确实发现这个“功能”对调试很有用。暂停旋转立方体以进行更仔细的检查等。

标签: winapi mouse rendering nonclient


【解决方案1】:

当您单击标题栏时,会出现a brief pause,而窗口管理器会尝试确定您是在单击还是开始拖动(移动窗口)。如果您仍然按住按钮,那么这是一个拖动:窗口管理器设置自己的消息循环并泵送消息,直到您释放鼠标。您的窗口应该仍然能够处理消息,因为它们仍然会被分派,但是如果您的动画依赖于自定义消息循环,那么您将被卡住,直到模态拖动循环结束。

通过触发动画来响应消息来解决这个问题:计时器对我来说似乎是个不错的选择。

【讨论】:

  • 只是想澄清一下我的应用程序不依赖于自定义消息循环。此外,我相信此条件适用于 Windows XP 上的所有应用程序(以及 2000...尚未在其他应用程序上测试过)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 2011-12-29
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多