工作线程与界面线程

本文详细介绍了工作线程与界面线程的区别,强调了消息循环在两者中的作用。模态和非模态对话框的消息处理方式有所不同,非本线程窗口操作建议使用消息传递。创建界面线程时,需要从CWinThread派生并实现消息循环。通过示例代码展示了如何创建模态和非模态对话框,以及如何使用afxBeginThread函数启动界面线程。
摘要由CSDN通过智能技术生成

工作线程与界面线程

区别

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

  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));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值