我想在MFC中创建一个对话框后创建一个线程。有没有Windows提供的功能,并在OnInitDialog
之后自动调用,以便我可以在其中创建我的线程?在MFC中调用OnInitDialog函数后是否有任何函数?
回答
您可以简单地在OnInitDialog
函数中创建线程。没有理由通过去搜索一个不同的函数来过度复杂,或者将初始化代码分成两部分。 (还有不是任何这样的功能,因为有要发送没有相应的Windows消息。)
如果你希望得到您的对话框,在屏幕上之前创建的线程,你可以只显示它手动使用ShowWindow
function。例如:
ShowWindow(SW_SHOW);
RedrawWindow();
也看到这个帖子的雷蒙德陈:Waiting until the dialog box is displayed before doing something
OnInitDialog()
是初始化时调用的主要函数(与WM_CREATE
相关)。
为什么你不能在那里创建你的线程?
我在onintidialog函数内部创建了两个线程,但是当我运行该对话框时,对话框非常缓慢。因此,我在内部创建线程,即5ms时间后对话形成,然后线程将开始工作正常。所以我认为,除了在定时器中创建线程以外,如果在创建dialo之后还有其他任何函数被调用,那么我可以将我的代码放在那里。是否存在任何函数? – Suri 2011-02-23 08:23:48
对'WM_INITDIALOG'的反应是不是'OnInitDialog'? – 2011-02-23 08:26:40
我已经改变了线程的优先级,以低于正常当线程执行的第一次我的线程设置为正常修道院。这工作正常。感谢您的答复。
- 1. 如何在mfc中调用函数...?
- 2. 如何在MFC中调用Javascript函数?
- 3. MFC SetRegistryKey ...是否有GetRegistryKey函数?
- 4. 是否有任何GMP对数函数?
- 5. ondraw函数不在mfc中调用?
- 6. 检查函数调用是否存在任何参数
- 7. 在屏幕上显示活动负载后是否有任何函数调用?
- 8. 在cometchat中加载“好友列表”后是否有任何回调函数?
- 9. 是否有任何理由Object.freeze函数?
- 10. 他们是否有任何方式来调用内部函数
- 11. PowerShell是后函数调用
- 12. 是否可以在Javascript函数中调用ASP.NET函数?
- 13. matlab在多次调用mex函数后没有任何反应
- 14. 如何在函数中调用函数?
- 15. 如何从CDialog :: OnInitDialog或在此函数结束后立即结束对话框mfc应用程序?
- 16. 在MFC/C++中是否有任何数据库事务机制?
- 17. 是否有任何函数对象在STL中创建对象?
- 18. 在此函数中使用引用参数是否有任何优势?
- 19. 在Response.Redirect后调用函数
- 20. 何时知道某个函数是否是回调函数?
- 21. 在所有上传的文件被删除后,Uploadify中是否有任何函数调用?
- 22. 在函数中声明的var在多个函数调用中是否存在?
- 23. 调用setTimeout函数之后的函数
- 24. 使用PHP调用PHP函数在后端调用PHP函数
- 25. 从C++程序中的C库调用函数时是否有任何缺陷?
- 26. 调整检查函数参数是否存在成员函数
- 27. 在调用另一个函数之后调用函数
- 28. fortran中的Btest函数,python中是否有任何等价物?
- 29. 如何在PHP中记录所有调用函数? (mail()函数)
- 30. 如何用另一个函数调用具有任意参数的函数?
我发现我还需要调用'CenterWindow()',因为调用ShowWindow导致左上角的对话框。 – Klox 2016-06-25 17:32:43
@klox嗯,这不应该是必要的。对话框将自动以其所有者窗口为中心。这发生在内部MFC函数'_AfxPostInitDialog'中,它在'OnInitDialog'后面运行。如果'OnInitDialog'函数没有改变对话框的坐标,'_AfxPostInitDialog'实际上会调用'CenterWindow'。但明确地调用它也不会伤害,所以无论工作如何。考虑到多显示器系统,请确保您将其置于合理的位置。始终以主显示器为中心是错误的决定。 :-) – 2016-06-26 07:02:36
我没有所有者窗口(对话框是唯一的窗口),但是您的描述有助于解释我看到的行为变化。 – Klox 2016-06-27 21:18:09