工作线程与界面线程
程序员文章站
2022-03-04 12:34:09
...
工作线程与界面线程
区别
工作线程与界面线程的区别在于:消息循环
- 模态对话框有自己的消息循环
- 非模态对话框需要其所在线程中有消息循环
MSG msg = { 0 };
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
在界面的操作时最好还是在界面线程中进行处理,但是如果处理的是非本线程的窗口时建议用发消息的方式!
界面线程的创建:
- 使用类向导添加
MFC类
从CWinThread
类派生自己的子类:CUIThreadApp
; - 重载
InitInstance
(必须重载)与ExitInstance
(可选重载)函数 - 在
InitInstance
函数中进行界面的创建
//模态对话框创建
CTestDlg dlg;
dlg.DoModal();//模态对话框
//非模态对话框的创建
CTestDlg* pTest = new CTestDlg(); //采用局部变量的方式创建一个非模态对话框(不推荐)
pTest->Create(IDD_DIALOG1, NULL);
pTest->ShowWindow(SW_SHOW);//非模态对话框
- 在主窗口下调用
afxBeginThread
函数开启界面线程:
AfxBeginThread(RUNTIME_CLASS(CUIThreadApp));
上一篇: 获取百度地图相关代码