在几乎所有 Windows 应用程序中,我注意到在非客户区按住鼠标按钮会导致绘制停止。为什么需要这个?
例如,我有一个 Managed Direct 3D 应用程序,它显示一个旋转的立方体。如果我将指针放在标题栏上并按住鼠标按钮,即使我没有将任何此类条件编码到我的循环中,立方体也会停止旋转。
为什么绘画停止了?有什么好处?最重要的是,我该如何解决这个问题?
当您单击标题栏时,窗口管理器会尝试确定您是单击还是开始拖动(移动窗口)时会出现短暂的停顿。如果您仍然按住按钮,那么这是一个拖动:窗口管理器设置自己的消息循环并泵送消息,直到您释放鼠标。您的窗口应该仍然能够处理消息,因为它们仍然会被分派,但是如果您的动画依赖于自定义消息循环,那么您将被卡住,直到模态拖动循环结束。
通过触发动画来响应消息来解决这个问题:计时器对我来说似乎是一个不错的选择。