现在位置: 首页 > 消息机制
2012-08-25 06:59 工业·编程 ⁄ 共 1918字 暂无评论
编程框架对消息与命令进行了必要的调整,使程序处理消息更容易,更易维护与封装。     1:消息     类CWinApp的成员方法Run函数中有一个消息循环,它会从消息队列中提取由各种     事件产生的消息。编程框架对消息循环的实现方式是提取消息,解析消息和分发消息。     2:消息处理函数     在MFC中,一个有作用的消息处理函数会处理每一个单...
阅读全文
2012-08-17 11:46 工业·编程 ⁄ 共 2899字 暂无评论
    在前面,我们讨论了自身类中消息的传递方法和成组的消息传递,接下来的问题就是如何向不同的类中传递消息。其实在《解析VC++6中的指针 》中,我们讨论了如何在不同的类中获取其他类的指针的方法,,我们借用这种获取指针的方法就可以轻松的随心所欲的在各个类中传递消息了。     首先,定义消息的方式和我们在上面所说的是一样的(例如在框架类中向视图类发送消息):     (1)...
阅读全文
2012-08-17 11:42 工业·编程 ⁄ 共 3322字 暂无评论
    自从发了5篇关于消息的文章(深度解析VC中的消息(下) ),有的网友来信希望我讲一些比较实用的消息机制用法,这里我想就用户的自定义消息做一个全面的论述,希望能够解除你心头的困惑。      一、普通的自定义消息方法     根据我在前面的几篇文章中提到的消息值的范围,我向大家都很清楚用户自定义消息的范围,不过,虽然说用会自定义消息从WM_USER开始,但是由于我...
阅读全文
2012-08-17 11:08 工业·编程 ⁄ 共 3024字 评论 1 条
    前面,我们分析了消息的基本理论和基本的函数及用法(深度解析VC中的消息(上) 、 深度解析VC中的消息(中)  、深度剖析消息反射机制),接下来,我们将进一步讨论消息传递在MFC中的实现。 MFC消息的处理实现方式     初看MFC中的各种消息,以及在头脑中根深蒂固的C++的影响,我们可能很自然的就会想到利用C++的三大特性之一:虚拟机制来实现消息的传递,但是经过分析,我们看到事情并...
阅读全文
2012-08-17 10:30 工业·编程 ⁄ 共 2700字 暂无评论
    在前面我们分析了控件通知消息WM_NOTIFY,和WM_NOTIFY紧密联系的还有一个MFC新特性:消息反射。本文中,我想就这个问题作一个全面的论述,如果有错误,还望各路大虾批评指正。 什么是消息反射?     在windows里面,子控件经常向父控件发送消息,例如很多子控件要绘制自己的背景,就可能向父窗口发送消息WM_CTLCOLOR。对于从子控件发来的消息,父控件有可能在处理之前,把消息返还给子控件处...
阅读全文
2012-08-17 10:24 工业·编程 ⁄ 共 7125字 评论 1 条
队列消息和非队列消息     从消息的发送途径来看,消息可以分成2种:队列消息和非队列消息。消息队列由可以分成系统消息队列和线程消息队列。系统消息队列由Windows维护,线程消息队列则由每个GUI线程自己进行维护,为避免给non-GUI现成创建消息队列,所有线程产生时并没有消息队列,仅当线程第一次调用GDI函数数系统给线程创建一个消息队列。队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给...
阅读全文
2012-08-17 10:15 工业·编程 ⁄ 共 3240字 评论 1 条
    Windows编程和Dos编程,一个很大的区别就是,windows编程是事件驱动,消息传递的。所以,要做好windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的论述,由于小生初学VC,里面可能有一些错误的地方,还往各位大虾批评、指正。 消息是指什么?     消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位...
阅读全文
2012-08-06 22:26 工业·编程 ⁄ 共 12823字 暂无评论
一.CWnd消息处理 一切从窗口(HWND)的创建说起,在MFC中,CWnd::CreateEx执行窗口创建过程。 从调用BOOL CWnd::Attach(HWND hWndNew)那一刻起,即将一个窗口(HWND)托付给一个具体的CWnd对象(子类化)。 BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, intnHeight, HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam) { // allow modific...
阅读全文
2012-08-06 21:36 工业·编程 ⁄ 共 2360字 暂无评论
1  Windows 消息按照产生后所走的路经可以分为队列消息和非队列消息。 队列消息:系统产生的消息后首先进入程序的线程消息队列,并且每次从消息队列中取出消息后分发到相应的Window procedure 来处理,其典型的流程如下: MSG msg; while( GetMessage(&msg, NULL, 0, 0) ) {   TranslateMessage (&msg);   DispatchMessage (&msg); } Window Procedure 的典型程序如下: LRESULT C...
阅读全文
2012-08-06 21:21 工业·编程 ⁄ 共 4902字 评论 1 条
前一段,帮人写了个小控件,又温习了一遍Windows消息处理机制,现在把一些知识点总结出来,供大家参考. 1.窗口    Windows程序是由一系列的窗口构成的,每个窗口都有自己的窗口过程,窗口过程就是一个拥有有固定 Signature 的 C函数,具体格式如下:    LRESULT CALLBACK WindowProc(HWND hwnd,        UINT uMsg,        WPARAM wPa...
阅读全文