VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 331|回复: 0

VC++高级班之多线程篇-[3]MFC中用户界面线程的相关操作

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-3-28 10:10:39 | 显示全部楼层 |阅读模式
①、工作线程与界面线程的区别:消息循环
1、模态对话框有自己的消息循环;
但是也不建议在工作线程中执行界面方面的相关操作,会发生意想不到的错误!

2、非模态对话框需要其所在线程中有消息循环:
不信加个 Sleep 试试就知道了!

  1. MSG msg = {0};
  2. while(GetMessage(&msg, NULL, 0, 0))
  3. {
  4.         TranslateMessage(&msg);
  5.         DispatchMessage(&msg);
  6. }
复制代码

===================================================
②、所以,在界面的操作时最好还是在界面线程中进行处理,
但是如果处理的是非本线程的窗口时建议用发消息的方式!
默认MFC类型的对话框工程、文档视图类工程等都是使用的MFC界面线程。
===================================================
③、界面线程的创建:
1、从 CWinThread 类派生自己的子类:CUIThreadApp;
2、重载 InitInstance(必须重载) 与 ExitInstance(可选重载) 函数;
3、在 InitInstance 函数中进行界面的创建;
4、调用 AfxBeginThread 函数开启界面线程: AfxBeginThread(RUNTIME_CLASS(CUIThreadApp));
===================================================
※※※ 小作业:理解并使用MFC中的界面线程!
在非模态对话框退出的时候,进行析构处理,释放资源!
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
VC驿站Vip会员售后答疑截图【持续更新】:https://www.cctry.com/thread-288054-1-1.html
教程介绍及详情请见:https://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:https://www.cctry.com/static/vip/index.html




上一篇:VC++高级班之多线程篇-[2]线程的运行状态
下一篇:VC++高级班之多线程篇-[4]线程的相关操作

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-13 08:43

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表