一.开篇引论 熟悉Win32开发的朋友,应该非常了解它的基本组成和流程 1. WinMain:书写窗口类(WNDCLASS) -> 注册窗口类 -> 创建窗口 -> 显示窗口和更新窗口 -> 消息循环 2. WndProc(回调函数):消息处理函数,由windows操作系统自行调用 而MFC呢,就是用c++面向对象的编程思想将这些主要成分封装到各个基本类中,由于封装得很隐蔽,所以学习它的难度就大大增加了.今儿,我就带着大家一起来剖析一下MFC的来龙去脉 在看后面两点之前,先上一份剖…
说到消息,在MFC中,“最熟悉的神秘”可算是消息映射,那是我们刚开始接触MFC时就要面对的东西.有过SDK编程经验的朋友转到MFC编程的时候,一下子觉得什么都变了样.特别是窗口消息及对消息的处理跟以前相比,更是风马牛不相及的.如文档不是窗口,是怎样响应命令消息的呢? 初次用MFC编程,我们只会用MFC ClassWizard为我们做大量的东西,最主要的是添加消息响应.记忆中,如果是自已添加消息响应,我们应何等的小心翼翼,对BEGIN_MESSAGE_MAP()……END_MESSAGE_MAP(…
序: 本人对Windows系统.MFC谈不上有深入的了解,但对MFC本身包装API的机制很有兴趣,特别是读了候老师的<深入浅出MFC>后,感觉到VISUAL C++的Application FrameWork十分精制[不敢用“完美”一词].在以前,我对SDI结构处理消息有一定的认识,但对于模式对话框的消息机制不了解,读了<深入>一书也没能得到解决,近日,通过在CSDN上网友的帮助,和查阅MSDN,自认为已经了解.一时兴起,写下这些文字,没有其它目的,只是希望让后来者少走弯路,也希望…
MFC中WinMain和回调函数CALLBACK 一,路线        1.一般普通窗口或控件建立调用的CWnd :: CreateEx函数        2.经过资源对话框创建的即不调用的CWnd :: CreateEx函数   二,在WIN32SDK下编程我们总是从入口函数WINMAIN和给予窗口类指定窗口回调函数(CALLBACK),如下: LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI _tWinMain…
转自: 1.http://blog.sina.com.cn/s/blog_6b5180bf01012kbz.html 2.http://blog.csdn.net/happyhhb/article/details/1623278 3.http://njufsh.blog.163.com/blog/static/1917928162011103104222589/ 孙鑫的MFC教程第4课主要讲了消息机制和MFC作图. MFC使用一种消息映射机制来处理消息,在应用程序框架中的表现就是一个消息与消息处…
原文:WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化 [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]在本篇文章中,我们将讨论WCF四大契约(服务契约.数据契约.消息契约和错误契约)之一的消息契约(Message Contract).服务契约关注于对服务操作的描述,数据契约关注于对于数据结构和格式的描述,而消息契约关注的是类型成员与消息元素的匹配关系. 我们知道只有可序列化的对象才能通…
MFC模态对话框的消息循环 单线程程序, 当主窗口响应函数中弹出模态对话框时,为什么主窗口响应函数可能照常工作? 当弹出模态对话框时,线程的消息循环无法返回,父窗口的事件本应没人处理,应该处于卡死状态,但实事上父窗口是可以正常响应能接收到的消息的,比如计时器传来的WM_TIMER 及系统托盘菜单传回来的WM_COMMAND. 之前的消息循环无法返回是正确的,但模态对话框并不意味着死循环,实事上,它在做另一个消息循环. AfxInternalPumpMessage() 里面就是一个消息泵,包括消息…
何谓消息.消息处理函数.消息映射?消息简单的说就是指通过输入设备向程序发出指令要执行某个操作.具体的某个操作是你的一系列代码.称为消息处理函数. 在SDK中消息其实非常容易理解,当窗口建立后便会有一个函数(窗口处理函数)开始执行一个消息循环,我们还可以清楚的看到消息处理的脉络.一个switch case语句就可以搞定,消息循环直到遇到WM_QUIT消息才会结束,其余的消息均被拦截后调用相应的处理函数. 但在封装了API的MFC中,消息似乎变的有些复杂了,我们看不到熟悉的switch case语句…
MFC原理第五讲.消息映射.以及如何添加消息 一丶消息映射是什么 我们知道.Win32程序.都是通过消息去驱动的. 不断的在处理消息. 只要我们使用固定的宏.就可以让我们的框架知道一旦消息发生.该往哪一个类传递. 每一个类可以拥有一个映射表格. 也可以没有. 关键宏 1. DECLARE_MESSAGE_MAP  声明宏.放在类中 2. BEGIN_MESSAGE_MAP      实现宏放在类实现外 3. END_MESSAGE_MAP   实现宏放在类外面 如何添加消息. 如果我们添加了 B…
以消息为基础,以事件驱动之 程序的进行依靠外部消息来驱动,即:程序不断等待任何可能的输入,然后做判断,然后再做适当的处理. 消息输入:操作系统捕获,以消息形式进入程序.(操作系统通过其USERS模块中掌管各个外围的驱动程序来侦测.他们有侦测循环) 输入:硬件输入放在系统队列 里+软件输入放在程序队列里. 应用程序调用GetMessage API取得消息. 个人理解windows消息机制: 窗口注册的时候做了一下动作: 注册窗口类(指定窗口函数)+创建窗口.这样操作系统就知道一个窗口对象的窗口函数…