`

WINDOWS程序的事件驱动特性——核心是消息

    博客分类:
  • C++
阅读更多
转自xiunai78的博客,原文地址:http://blog.csdn.net/xiunai78/archive/2008/12/31/3668887.aspx

消息分为进队消息消息和非进队消息。所谓进队消息就是windows将消息发送到每个线程所专有的队列中,然后由程序自主处理,这种消息基本上是由用户输入产生(wm_keydown,wm_keyup,wm_char,wm_mouse**,以及wm_paint,wm_timer,wm_quit)或者是调用postmessage,postthreadmessage产生的消息;所谓的非进队消息就是直接发送给窗口过程的消息,就是直接调用窗口过程,上述消息以外的一般都是这种类型!

    一个线程一旦建立了至少一个窗口,则系统就为其分配一个消息队列。主要表现形式为系统为其分配一个THREADINFO结构,该结构有四个指针分别指向登记消息队列,发送消息队列,应答消息队列和虚拟输入队列。如果想将消息放入登记消息队列,可以调用postmessage,或者 postthreadmessage。其余的消息队列主要用于处理如下的事务。当某线程调用sendmessage给别的线程创建的窗口时,发送的消息首先追加到接收线程的发送消息队列,发送线程处于空闲状态,等待接收线程处理完他的消息返回给发送线程的应答队列,等到后发送线程被唤醒取得应答队列的消息 (就是处理完消息的返回值),继续执行。而虚拟输入队列则是由windows的系统线程RIT(原始输入线程)负责将硬件事件转换成消息添加到对应线程的虚拟消息队列中。

    处理消息队列的顺序。首先windows绝对不是按队列先进先出的次序来处理的,而是有一定优先级的。优先级通过消息队列的状态标志来实现的。首先最高优先级的是别的线程发过来的消息(通过sendmessage),其次是处理登记消息队列消息,再次处理QS_QUIT标志,再处理虚拟输入队列,再处理 wm_paint最后是wm_timer!
分享到:
评论

相关推荐

    windows驱动开发技术详解-part2

    Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...

    Windows驱动开发技术详解的光盘-part1

    本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...

    windowsnt 技术内幕

    调协系统管理告警(Administrative Alert) 向用户发送系统管理消息 远程关闭一台Windows NT计算机 使用Windows NT系统属性对话框 Windows NT诊断程序(Diagnostic)简介 使用Windows NT诊断程序打印一份报告 在Windows ...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    第iii部分 智能客户端应用程序第14章 windows窗体 543 14.1 system.windows.forms名称空间 543 14.2 窗体的使用 544 14.2.1 设置启动窗体 544 14.2.2 通过sub main显示窗体 545 14.2.3 application类的更...

    C#微软培训资料

    1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 ...

    asp.net知识库

    在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    5.1.5 Windows的窗口和消息处理与传递 114 5.1.6 Windows GDI 125 5.2 控制游戏的速度 130 5.3 浅谈MFC 132 5.4 小结 132 第6章 汇编优化 135 6.1 浅谈代码优化 138 6.2 并不仅仅是汇编 139 6.2.1 在算法实现时减少...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    5.1.5 Windows的窗口和消息处理与传递 114 5.1.6 Windows GDI 125 5.2 控制游戏的速度 130 5.3 浅谈MFC 132 5.4 小结 132 第6章 汇编优化 135 6.1 浅谈代码优化 138 6.2 并不仅仅是汇编 139 6.2.1 在算法实现时减少...

    Python编程入门经典

    15.8.2 事件驱动 258 15.8.3 DOM的含义 258 15.8.4 内存中访问 258 15.9 使用SAX或者DOM的 理由 259 15.9.1 能力权衡 259 15.9.2 内存考虑 259 15.9.3 速度考虑 259 15.10 Python中可用的SAX 和DOM解析器 259 ...

    新版Android开发教程.rar

    特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • 集成的浏览器 基于开源的 WebKit 引擎 • 优化的图形库 包括定制的 2D 图形库, 3D 图形库基于 OpenGL ES ...

    高级软件架构师复习提纲

    33、发布管理角色需要参与驱动的计划包括:安全性计划/部署计划/采购和设施计划/试运行计划 34、好的项目远景能达到什么作用?引导团队朝共同的方向前进/简化决策的制定过程,确保决策的一致性/激励团队/强化解决...

Global site tag (gtag.js) - Google Analytics