在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);
}
}
答案 0 :(得分:1)
我没有检查过,但我认为每次鼠标移动时光标都会更新。因此,每次获得WM_SETCURSOR消息或更改默认光标时,您都可以调用SetCursor()。请注意,每次设置光标时都不应调用LoadCursor()。
默认光标在窗口的WNDCLASS结构中设置。
有关详细信息,请参阅WM_SETCURSOR。
答案 1 :(得分:0)
当您启动线程时将其调用为主线程,然后在线程退出时将主要线程的PostMessage发送到主线程并禁用该消息上的沙漏。