6.windows的消息机制 重要!重要!重要!

所谓程序执行机制分为:

  过程驱动:程序的执行过程总是按照预定好的顺序执行。

  事件驱动:程序的执行是无序的,用户可以根据需要随机出发相应的事件。

  win32窗口程序就是采用事件驱动方式执行,也就是消息机制。

什么是消息?

  当系统通知窗口工作时,就采用消息的方式派发给窗口。

消息的组成:(windows平台下消息必须由这6个部分组成)

  窗口句柄

  消息ID

  消息的两个参数(两个附带信息)

  消息的产生时间

  消息产生时的鼠标位置

DispatchMessage( &nMsg )是怎么派发消息(其实就是调用我们的窗口处理函数来处理这个消息)呢?

  通过nMsg.hWnd保存窗口数据的内存,然后找到窗口对应的窗口类名称,用这个名称去匹配每个窗口类名称。

  一旦匹配成功,就直接调用我们自己定义的窗口处理函数。

  

时间: 2024-10-13 20:26:49

6.windows的消息机制 重要!重要!重要!的相关文章

windows程序消息机制(Winform界面更新有关)--转

1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队列里面消息的最主要来源.这里的While循环使用了GetMessage() 这个方法,这是个阻塞方法,也就是队列为空时方法就会阻塞,从而这个While循环停止运动,这避免了一个程序把cpu无缘无故的耗尽,让其他程序难以得到响应.当然在某些需要cpu最大限度运动的程序里面就可以使用另外的方法,例如某些

windows程序消息机制(Winform界面更新有关)

windows程序消息机制(Winform界面更新有关) 转自:http://www.cnblogs.com/blosaa/archive/2013/05/31/3109586.html 1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队列里面消息的最主要来源.这里的While循环使用了GetMessage() 这个方法,这是个阻塞方法,也就是队列

【C#】Windows程序消息机制

一.Windows程序消息机制 1.Windows程序消息机制使用消息队列实现. (1).UI线程为主线程,用于管理整个窗体以及子控件的运行. (2).窗体上的所有消息是消息队列的主要来源. (3).PeekMessage.GetMessage用于查看应用程序消息队列,有消息时将队列中的消息派发出去. GetMessage只有在消息队列中有消息时返回,队列中无消息GetMessage就会一直等,直至下一个消息出现时才返回.在等的这段时间,应用程序不能执行任何指令.即:当队列为空,GetMessa

Windows程序消息机制浅析

1.消息  消息是由MSG结构体来表示的.如下: 1 typedef struct tagMSG { 2 HWND hwnd; 3 UINT message; 4 WPARAM wParam; 5 LPARAM lParam; 6 DWORD time; 7 POINT pt; 8 } MSG 2.WinMain函数的定义 WinMain函数的原型声明如下: 1 int WINAPI WinMain( 2 HINSTANCE hInstance, // handle to current ins

从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第一讲 WPF中 windows消息机制

谈到桌面应用程序,我们第一反应就是它的消息机制是怎么处理的,那么我们就先聊聊这个windows消息机制 谈起“消息机制”这个词,我们都会想到Windows的消息机制,系统将键盘鼠标的行为包装成一个Windows Message,然后系统主动将这些Windows Message派发给特定的窗口,实际上消息是被Post到特定窗口所在线程的消息队列,应用程序的消息循环再不断的从消息队列当中获取消息,然后再派发给特定窗口类的窗口过程来处理,在窗口过程中完成一次用户交互. 其实,WPF的底层也是基于Win

深入Delphi -- Windows 消息机制

http://www.txsz.net/xs/delphi/3/Windows%20%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6.htm Windows 消息机制 by machine 大家是不是很奇怪为什么我还没说到Delphi的控件呢? 不过不用着急,有关深入控件的内容,将会很快出现了,但在这之前, 还得了解Windows图形界面程序的机制--Windows的消息机制. 使用过Delphi的朋友都知道,Delphi是一个真正面向对象的编程环境, 但是不但如此,De

Android Handler消息机制

在上一篇文章<Android AsyncTask异步任务>中我们介绍了如何使用AsyncTask异步处理网络通信和UI更新.在本文中将使用Handler消息机制来异步处理网络通信和UI更新. Google参考了Windows的消息机制,在Android系统中实现了一套类似的消息机制.学习Android的消息机制,有几个概念(类)必须了解: 1.Message 消息,理解为线程间通讯的数据单元.例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给UI线程. 2.M

windows进程消息间的传递方式

1 文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容. Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针.通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享. 应用程序有三种方法来使多个进程共享一个文件映射对象. (1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄. (

深入Windows内核——C++中的消息机制

<编程思想之消息机制>一文中我们讲了消息的相关概念和消息机制的模拟,本文将进一步聊聊C++中的消息机制. 从简单例子探析核心原理 在讲之前,我们先看一个简单例子:创建一个窗口和两个按钮,用来控制窗口的背景颜色.其效果如下: 图 2 :效果图 Win32Test.h #pragma once #include <windows.h> #include <atltypes.h> #include <tchar.h> //资源ID #define ID_BUTTO