MFC 应用设置沙漏光标的问题

我们老五今天破天荒地问了我一个问题:
在一个 MFC 对话框中,点击一个按钮,要创建现程执行一个长时间的操作,于是自然而然地想到使用 BeginWaitCursor() 函数将鼠标光标形状改变为沙漏,当操作结束时,向对话框发送一个消息通知其调用 EndWaitCursor() 函数恢复光标为正常形状。
可是他说沙漏根本显示不出来。

我写了一个很小的测试程序来重现此问题,果然存在。但怎么也想不通原因在哪里,后来突然想到 MFC 默认对 WM_SETCURSOR 消息进行了处理,很可能问题出在这里,略加修改后问题解决。示例代码如下(假定对话框类名为 CTestCursorDlg):

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注