从线程的队列中提取消息的算法
来源:互联网 发布:unity3d 布料 撕裂 编辑:程序博客网 时间:2024/05/22 02:26
当一个线程调用 GetMessage 或 PeekMessage 时,系统必须检查线程的队列状态的情况,并确定应该处理哪个消息。
系统确定线程应该处理的下一个消息的步骤:
(1)
如果 QS_SENDMESSAGE 标志被设置,系统向相应的窗口过程发送消息。GetMessage 或 PeekMessage 函数在内部进行这种处理,并且在窗口过程处理完消息后不返回到线程,这些函数要等待其他处理的消息;
(2) 如果消息在线程的登记消息队列中,函数 GetMessage 或 PeekMessage 填充传递给他们的
MSG 结构,然后函数返回。这时,线程的消息循环通常调用 DispatchMessage 让相应的窗口过程来处理消息;
(3) 如果 QS_QUIT 标志被设置。GetMessage 或 PeekMessage 返回一个 WM_QUIT 消息并复位QS_QUIT标志;
(4) 如果消息在线程的虚拟输入队列,函数 GetMessage 或 PeekMessage返回硬件输入消息;
(5) 如果 QS_PAINT 标志被设置,GetMessage 或 PeekMessage 为相应的窗口返回一个WM_PAINT 消息;
(6) 如果QS_TIMER 标志被设置,GetMessage 或 PeekMessage 返回一个WM_TIMER消息。
系统确定线程应该处理的下一个消息的步骤:
(1)
如果 QS_SENDMESSAGE 标志被设置,系统向相应的窗口过程发送消息。GetMessage 或 PeekMessage 函数在内部进行这种处理,并且在窗口过程处理完消息后不返回到线程,这些函数要等待其他处理的消息;
(2) 如果消息在线程的登记消息队列中,函数 GetMessage 或 PeekMessage 填充传递给他们的
MSG 结构,然后函数返回。这时,线程的消息循环通常调用 DispatchMessage 让相应的窗口过程来处理消息;
(3) 如果 QS_QUIT 标志被设置。GetMessage 或 PeekMessage 返回一个 WM_QUIT 消息并复位QS_QUIT标志;
(4) 如果消息在线程的虚拟输入队列,函数 GetMessage 或 PeekMessage返回硬件输入消息;
(5) 如果 QS_PAINT 标志被设置,GetMessage 或 PeekMessage 为相应的窗口返回一个WM_PAINT 消息;
(6) 如果QS_TIMER 标志被设置,GetMessage 或 PeekMessage 返回一个WM_TIMER消息。
- 从线程的队列中提取消息的算法
- 从zbar中提取的bresenham算法
- 使用线程的消息队列
- 线程间的消息队列
- 从大样本中均匀提取子集的算法
- 将消息推入消息队列并从消息队列中取出------利用异质链表和C++的多态性
- 一篇线程消息队列的文章
- 线程和消息队列的详解 【图】
- 简单的线程消息队列实现
- Handler(3)--在子线程中主线程的 消息队列发送消息
- 基于SAAJ的Web服务----(三)从SOAP消息中提取内容
- 多进程同时从消息队列取消息的问题
- 从指定的字符串中提取Email
- 从指定的字符串中提取Email
- 从文本中提取所有的单词
- 从xml中提取所有的文本
- 从信息中提取发件人的邮箱
- 从url中提取文件的扩展名
- ACCESS自动编号如何恢复从1开始的方法
- 什么是伪静态?SEO中如何理解伪静态?
- 2009年雅思考试报名步骤详解【转载】
- 如何实现拨通电话,IVR提示,转人工按1,转传真按2,繁忙时自动转到队列,并播放音乐,并提示按1继续等待,按2退出。
- 产生一个自签名证书
- 从线程的队列中提取消息的算法
- JS正则表达式
- 2009年雅思(IELTS)考试时间安排表[转载]
- 陈裕源日志导航
- C++内存管理
- 达到每天15000次的访问量的26个步骤
- Linux下sort命令的使用
- 随企业一同生长的信息系统
- Widget技术_概念(1)