在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/