|
①、工作线程与界面线程的区别:消息循环
1、模态对话框有自己的消息循环;
但是也不建议在工作线程中执行界面方面的相关操作,会发生意想不到的错误!
2、非模态对话框需要其所在线程中有消息循环:
不信加个 Sleep 试试就知道了!
- MSG msg = {0};
- while(GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
复制代码
===================================================
②、所以,在界面的操作时最好还是在界面线程中进行处理,
但是如果处理的是非本线程的窗口时建议用发消息的方式!
默认MFC类型的对话框工程、文档视图类工程等都是使用的MFC界面线程。
===================================================
③、界面线程的创建:
1、从 CWinThread 类派生自己的子类:CUIThreadApp;
2、重载 InitInstance(必须重载) 与 ExitInstance(可选重载) 函数;
3、在 InitInstance 函数中进行界面的创建;
4、调用 AfxBeginThread 函数开启界面线程: AfxBeginThread(RUNTIME_CLASS(CUIThreadApp));
===================================================
※※※ 小作业:理解并使用MFC中的界面线程!
在非模态对话框退出的时候,进行析构处理,释放资源!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av39728551/?p=3
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1otACajO95sSpFfvNXH-cTQ 提取码:b4m4
本节课件下载(回复后可见):
备注:VIP会员可免费下载本站所有资源(点击查看)!
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^ |
上一篇: VC++高级班之多线程篇-[2]线程的运行状态下一篇: VC++高级班之多线程篇-[4]线程的相关操作
|