windows消息处理机制

Windows消息机制

隐身守侯 提交于 2019-12-27 00:09:50
Windows消息机制 Windows 操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。如果不理解 Windows 消息处理机制,肯定无法深入的理解 Windows 编程。可惜很多程序员对 Windows 消息只是略有所闻,对其使用知之甚少,更不了解其内部实现原理,本文试着一步一步向大家披露我理解的 Windows 消息机制。可以说,掌握了这一部分知识,就是掌握了 Windows 编程中的神兵利器,灵活运用它,将会极大的提高我们的编程能力。 一、 消息概述 Windows 窗体是怎样展现在屏幕上的呢?众所周知,是通过 API 绘制实现的。 Windows 操作系统提供了一系列的 API 函数来实现界面的绘制功能,例如: ² DrawText  绘制文字 ² DrawEdge  绘制边框 ² DrawIcon  绘制图标 ² BitBlt 绘制位图 ² Rectangle  绘制矩形 ² … 再复杂的程序界面都是通过这个函数来实现的。 那什么时候调用这些函数呢?显然我们需要一个控制中心,用来进行“发号施令”,我们还需要一个命令传达机制,将命令即时的传达到目的地。这个控制中心,就是一个动力源,就像一颗心脏,源源不断地将血液送往各处。这个命令传达机制就是 Windows 消息机制, Windows 消息就好比是身体中的血液,它是命令传达的使者。

windows消息机制与实例

六眼飞鱼酱① 提交于 2019-12-27 00:09:24
windows发送窗口消息   所需工具:spy++,visual studio 2017,c#语言    技术路线:首先通过spy++获得所要操纵的窗口的句柄,函数的原型声明为:   [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);   此函数获得目标窗口的句柄,如果要获得某个子窗口的句柄,通过以下函数可获得:   [DllImport("User32.dll ")] public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr childe, string strclass, string FrmText);   对目标窗口的操作(发送指令),使用的函数原型如下:   [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);   我通过SendMessage函数发送的是绘图动作,具体包括鼠标的down,move,up   另一个发送消息的函数

MFC消息响应机制分析

谁都会走 提交于 2019-12-07 10:42:05
---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。 1.引言 ---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效、灵活的使用MFC编程,了解MFC的体系结构往往可以使编程工作事半功倍。它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。但这套机制本身比较庞大和复杂,对它的分析和了解无疑有助于我们写出更为合理的高效的程序。这里我们简单的分析MFC的消息响应机制,以了解MFC是如何对Windows的消息加以封装,方便用户的开发。 2. SDK下的消息机制实现 ---- 这里简单的回顾一下SDK下我们是如何进行Windows的程序开发的。一般来说,Windows的消息都是和线程相对应的。即Windows会把消息发送给和该消息相对应的线程。在SDK的模式下,程序是通过GetMessage函数从和某个线程相对应的消息队列里面把消息取出来并放到一个特殊的结构里面,一个消息的结构是一个如下的STRUCTURE。 typedef struct tagMSG { HWND hwnd; UINT