MFC中Windows窗口消息循环及多线程之间关系
Windows中一个进程可以包含多个线程,由多个线程组成。在Windows应用程序中,窗体是由“UI线程(User Interface Thread)”的特殊类型的线程创建的。一个UI线程包含一个消息循环对列。在窗口运行过程中,按下控件或对窗口进行一些操作等同于向消息循环队列插入消息;然后由系统调用相应消息的响应函数,使用户操作得到响应。
当窗口某个消息的响应函数占用大量时间时,必定会影响窗口对下一个消息的响应。因此,对与那些比较耗时的操作的响应,使用多线程应该是个比较好的选择。即在控件的响应函数中创建一个线程,在线程函数中完成比较耗时的操作。
WaitForSingleObject()用于等待对线程函数的响应,通过这个函数也可以阻塞消息循环队列的运行,影响窗口的响应速度。
注意:创建型线程函数: CreateThread(NULL, 0, ThreadProc, (LPVOID) NULL, 0, NULL);
线程函数的格式: DWORD WINAPI ThreadProc(LPVOID lpParameter);
其中,线程函数必须是全局函数或者静态成员函数
MFC中Windows窗口消息循环及多线程之间关系相关推荐
- Windows窗口消息大全,全不全自己看
1 Windows窗口消息大全,全不全自己看 2 3 // 4 #include "AFXPRIV.H"//消息值的定义来源 5 #include "Dde.h" ...
- Windows窗口消息介绍
Windows窗口消息介绍 // #include "AFXPRIV.H"//消息值的定义来源 #include "Dde.h"//DDE消息值的定义来源 #i ...
- 令人生疑的Windows窗口消息WM_PAINT详解
目录 1.WM_APINT消息的产生 2.WM_ERASEBKGND消息说明 3.InvalidateRect和UpdateWindow 4.何时使用BeginPaint和EndPaint? 在做Wi ...
- C#通过Windows API捕获窗,获取窗口文本(FindWindow、GetWindowText),附录:Windows窗口消息大全、Windows API大全
文章目录 一.前言 二.使用Spy++工具分析窗口 三.C#通过Windows API捕获窗口,获取窗口文本 四.附录:Windows窗口消息 五.Windows API大全 1.API之网络函数 2 ...
- MFC中 windows object 和 C++ object
MFC中 windows object 和 C++ object The Problem Windows objects are normally represented by HANDLEs. Th ...
- 黑马程序员mfc中分割窗口---ctreeview未定义基类的解决方法
在跟班黑马程序学mfc中分割窗口,vs2019出现了以下的错误.解决方法很简单. 首先我们点击错误,自动定位到出错的类,会发现出错的是CSelcetView的头文件和源文件出错, 我们找到头文件中 在 ...
- MFC中关闭窗口的几种方法
MFC中关闭窗口的几种办法: 退出程序用AfxGetMainWnd()->SendMessage(WM_CLOSE); 关闭当前窗口用DestroyWindow( ); 关闭模式对话框用EndD ...
- MFC中的MainFrame Dlg,App,Doc,View的关系
MFC中的MainFrame Dlg,App,Doc,View的关系 MainFrame: 主框架类 Dlg 是Dialog 的缩写,表示对话框本身 App类就是这个SDI作为"程序&quo ...
- 面向过程中模拟出面向对象,用c语言模拟出MFC控件,消息循环,“设计用户界面”
大家好,今天给大家分享"怎样用c模拟出MFC控件 简单模拟出消息循环,按钮控件",面向过程中模拟出面向对象. 编程思路 首先用绘图库EasyX绘制窗口,窗口中绘制按钮,把按钮对象化 ...
最新文章
- Dlib库中实现正脸人脸关键点(landmark)检测的测试代码
- 聊一聊:开源社区应该用中文吗?
- vscode markdown插件_如何用Markdown写公众号
- python从txt读取数据并画图_Python读取txt某几列绘图的方法
- 京东发布双11首份战报:手机品类18秒销量突破万台
- 05-文件与流-课堂测试(四则运算)
- 药品查询 API数据接口
- 基于javaweb+jsp的在线书城书店系统(java+jdbc+Servlet+mysql)
- Java制作JDK8文档搜索引擎项目并部署到阿里云服务器
- io.fabric8.docker-maven-plugin插件使用
- 丁酉新年假期江门,甘孜旅行手记
- Magento的订单相关的SQL(订单编号、创建时间、总金额、收货人、收货人地址、收货人城市、州或省(简称)、收货邮编、收货人电话、付款人邮箱)
- 【T3】打印单据(非新打印)表头显示不全
- 微信红包c语言程序,C语言 微信红包
- 四、服务注册与发现Consul
- JZOJ 4210. 【五校联考1day1】我才不是萝莉控呢
- 电池充放电自动测试系统介绍
- 局域网搭建视频服务器
- 一款仿转转闲鱼新模板 带后台管理
- Activate、Deactivate 事件 Activate ThrottleEvent;
热门文章
- python学习-模块和包
- arch linux键盘布局,Arch Linux的安装、配置、优化及美化(一)
- 手机号脱敏处理_C#简单代码实现对手机号邮箱等隐私信息进行*号打码
- hal库选择滴答时钟函数_stm32h7“理解hal库框架”
- cifar10数据集测试有多少张图_基于特定数据集的Oracle、ClickHouse、ES测试报告
- python天天向上每十天休息一天_Python基础第十天
- 入门人工智能,我究竟该学些什么?
- 电子设计竞赛(7)-2017年电赛A题:微电网模拟系统教程
- c 类别构造函数需要包含所有成员吗_C++默认成员函数解析
- 怎么绘制机械孔_机械制图中常用的图纸简化画法,相当适合初学者!