winapi - 在线程持续时间内更改光标

标签 winapi mfc

在MFC应用程序中,只要线程正在运行,我想一直显示等待光标(沙漏),但是调用

SetCursor(LoadCursor(NULL, IDC_WAIT));

从静态ThreadProc成员函数内部没有任何作用。有什么帮助吗?

谢谢,RSel

编辑

弄清楚了。这是一种方法:

在构造函数中调用LoadCursor:
m_cursor = LoadCursor(NULL, IDC_WAIT);

在AfxBeginThread之前立即调用SetCursor:
SetCursor(m_cursor);
AfxBeginThread( ... );

覆盖OnSetCursor以防止光标过早地变回原来的状态:
CMyView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{   
    if (m_thread_is_running)
    {
        return false;
    }
    else
    {
        return CView::OnSetCursor(pWnd, nHitTest, message);
    }
}

最佳答案

我没有检查,但是我认为每次鼠标移动时都会更新光标。因此,您将在每次收到WM_SETCURSOR消息时调用SetCursor()或更改默认光标。请注意,您不应在每次设置游标时都调用LoadCursor()。

默认光标设置在窗口的WNDCLASS结构中。

有关更多详细信息,请参见WM_SETCURSOR

关于winapi - 在线程持续时间内更改光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6369244/

相关文章:

c++ - 应用程序崩溃 C++/MFC 的通用日志

c++ - 向菜单项添加工具提示)

c++ - 如何在 vc 2008 或 vc 2010 Beta 中将对话框栏或对话框放入 Pane

c++ - 如何清除ActiveX OCX控件的绘图区?

windows - 在 Windows 中隐藏控件

c++ - 没有重载函数的实例 ""匹配参数列表错误

c - 使用 CreateFileMapping 时出错 - C

CreateProcess 并捕获标准输出

c - 如何在 Linux 中创建具有特定安全权限的文件? (即相当于 Win32 CreateFile+SECURITY_ATTRIBUTES)

c++ - 在以下情况下我是否需要使用 wstring