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

时间:2016-03-01 06:29:58

标签: mfc

我有一个现有的(传统)SDI应用程序,我希望在显示UI后立即调用某些函数,即它通常处于空闲状态并等待用户输入。

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

CMyView::OnInitialUpdate()
{
    CView::OnInitialUpdate();
    //...

    LoadStartupData(); //<-- this is what I want to call

}

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

关于如何做到这一点的“最佳做法”是什么?

1 个答案:

答案 0 :(得分:2)

使用WM_APP + x消息在初始化代码中使用PostMessage。

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

在消息地图中使用ON_MESSAGE(MY_WM_APP_INIT,OnMyInit)条目。

其他方式是使用CWinApp :: OnIdle,但这不是特定的视图。

或者使用&#34;一次&#34;计时器...启动计时器处理并杀死它。