欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工作线程与界面线程

程序员文章站 2022-03-04 12:34:09
...

工作线程与界面线程

区别

工作线程与界面线程的区别在于:消息循环

  1. 模态对话框有自己的消息循环
  2. 非模态对话框需要其所在线程中有消息循环
MSG msg = { 0 };
	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

在界面的操作时最好还是在界面线程中进行处理,但是如果处理的是非本线程的窗口时建议用发消息的方式!

界面线程的创建:

  1. 使用类向导添加MFC类CWinThread类派生自己的子类:CUIThreadApp;
  2. 重载InitInstance(必须重载)与ExitInstance(可选重载)函数
  3. InitInstance函数中进行界面的创建
//模态对话框创建
CTestDlg dlg;
dlg.DoModal();//模态对话框
//非模态对话框的创建
CTestDlg* pTest = new CTestDlg(); //采用局部变量的方式创建一个非模态对话框(不推荐)
pTest->Create(IDD_DIALOG1, NULL);
pTest->ShowWindow(SW_SHOW);//非模态对话框    
  1. 在主窗口下调用afxBeginThread函数开启界面线程:
AfxBeginThread(RUNTIME_CLASS(CUIThreadApp));