对话框出现后立即操作

发布于 2024-11-19 12:44:32 字数 178 浏览 2 评论 0原文

我正在处理 MFC 项目。我有一种情况,我想在对话框出现后立即进行大量计算。 我尝试将这些计算放入 OnInitDialog() 中,并尝试将其放入构造函数中。出于显而易见的原因,使用这种方法时,需要花费一些时间才能出现非预期的对话框。

有没有一种方法可以在对话框出现后立即进行计算?如果是这样,我需要将我的代码放入哪个函数?

I am working with MFC project. I have a situation where I want to do an extensive calculation as soon as the dialog box shows up.
I tried putting this calculations in OnInitDialog() and also tried putting it in the contructor. For obvious reasons, with this approach, it takes time for the dialog box to appear which is not intended.

Is there a way where I can do my calculations immediately after the dialog box shows up? If so which is the function that I need to fit my code into?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝梦月影 2024-11-26 12:44:32

是的,从构造函数创建另一个线程或重写 OnInitDialog 是解决此问题的方法。但是,为了向对话框返回复杂初始化已完成的通知,您需要使用 SendMessagePostMessage 让对话框窗口知道这一点完成并适当更新 UI。您还需要自定义消息代码(WM_USER+N 或 WM_APP+N),以及消息映射中的条目:ON_MESSAGE

Yes, creating another thread from the constructor or OnInitDialog override is the approach for this problem. But for giving notification back to dialog box that Complex initialization is complete, you need to use SendMessage or PostMessage to let dialog-window know about this completion and update the UI appropriately. You would also need to have custom message-code (WM_USER+N, or WM_APP+N), along with an entry in message-map: ON_MESSAGE.

何其悲哀 2024-11-26 12:44:32
BOOL CMFC_dialogDlg::OnInitDialog()
{
 AfxBeginThread(ThreadFunc,NULL/*Pass the parameter to the function*/);
}

UINT ThreadFunc(LPVOID param)
{
 /*Do complex task*/

 for(int i=0;i<1000 ;i++)
 {
 }

}
BOOL CMFC_dialogDlg::OnInitDialog()
{
 AfxBeginThread(ThreadFunc,NULL/*Pass the parameter to the function*/);
}

UINT ThreadFunc(LPVOID param)
{
 /*Do complex task*/

 for(int i=0;i<1000 ;i++)
 {
 }

}
沫雨熙 2024-11-26 12:44:32

在这种情况下,您需要在子线程中进行计算。通常我使用 AfxBeginThread

In this situation you'll need to do the caculations in a subthread.Usually I do this job using AfxBeginThread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文