我有一个现有的(传统)SDI应用程序,我希望在显示UI后立即调用某些函数,即它通常处于空闲状态并等待用户输入。
通常我会把调用放在CView :: OnInitialUpdate中,例如:
CMyView::OnInitialUpdate()
{
CView::OnInitialUpdate();
//...
LoadStartupData(); //<-- this is what I want to call
}
...但是在显示UI之前执行此操作。为此我想在运行时显示一些UI反馈(它需要一段时间,应该在它自己的线程中,但这是一个不同的问题);该函数还在其末尾显示一个对话框,因此我确实需要UI可见。
关于如何做到这一点的“最佳做法”是什么?
答案 0 :(得分:2)
使用WM_APP + x消息在初始化代码中使用PostMessage。
当消息泵运行时,您的消息将传递到窗口,您可以执行延迟初始化。
在消息地图中使用ON_MESSAGE(MY_WM_APP_INIT,OnMyInit)条目。
其他方式是使用CWinApp :: OnIdle,但这不是特定的视图。
或者使用&#34;一次&#34;计时器...启动计时器处理并杀死它。