MFC SDI应用程序:显示UI后自动工作



我有一个现有的(遗留的(SDI应用程序,我想在UI显示后立即调用一些函数,即当它通常处于空闲状态并等待用户输入时。

通常我会把调用放在CView::OnInitialUpdate中,例如:

CMyView::OnInitialUpdate()
{
    CView::OnInitialUpdate();
    //...
    LoadStartupData(); //<-- this is what I want to call
}

但是这是在UI显示之前执行的。为此,我想在它运行时显示一些UI反馈(这需要一段时间,可能应该在它自己的线程中,但这是另一个问题(;函数的末尾还显示了一个对话框,所以我确实需要UI是可见的。

如何做到这一点的"最佳实践"是什么?

在带有WM_APP+x消息的init代码中使用PostMessage。

当消息泵运行时,您的消息将被传递到窗口,您可以执行惰性初始化。

在消息映射中使用ON_MESSAGE(MY_WM_APP_INIT,OnMyInit(条目。

另一种方法是使用CWinApp::OnIdle,但这不是特定于视图的。

或者使用"一次性"计时器。。。启动一个定时器处理它并杀死它。

最新更新