Windows:鼠标按下窗口装饰

时间:2008-10-27 05:21:08

标签: winapi mouse rendering nonclient

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

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

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

1 个答案:

答案 0 :(得分:7)

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

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