我创建了一个在MFC应用程序的主线程上运行的对话框。虽然这个对话框是模态的,但它在主线程(即消息泵线程)上做了一些需要时间的事情。每当需要时间时,我使用MFC类CWaitCursor创建一个自动变量。
在OnInitDialog方法中,它按预期工作。但是,如果我在OnInitDialog结束时执行相同操作,例如在响应自定义窗口消息的调用方法中,则等待光标不会显示。但是,如果我"激活应用程序"使用EveryWAN(允许从PC查看和控制设备的远程控制应用程序),然后光标显示。
我可以提供代码,但它充满了很多不太可能与问题相关的东西。我只是编写一个示例代码,然后显示我刚刚尝试解释的内容:
class MyDialog : public CDialog
{
public:
BOOL OnInitDialog()
{
CWaitCusor oWaitCursor; // Shows wait cursor.
Sleep( 5000 );
PostMessage( WM_FOO, 0, 0 );
}
LRESULT OnFoo( WPARAM wParam, LPARAM lParam )
{
CWaitCusor oWaitCursor; // Does NOT show wait cursor, unless I "activate" the application...
Sleep( 5000 );
}
};
您是否了解可能导致等待光标不会显示在InInitDialog之外的原因?它是Windows CE错误吗?它是焦点,屏幕刷新还是z-index问题?谢谢。