MFC六大关键技术
视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK
1、MFC六大关键技术
sad
a)MFC程序的初始化过程:
从CWinApp类派生一个应用程序类;
使用派生类定义的全局变量(theApp);
在预定义头文件“stdafx.h”中,禁用“windows.h”取而代之afx开头的MFC头文件;
编译设置中选择用“Use MFC in a Static Library”;
在CWinApp生类中,重写InitInstance函数作为程序启动代码。
b)消息映射:
DECLARE_MESSAGE_MAP 在头文件中声明了2个static成员变量和1个成员函数:
(重点是一个结构体数组:将一些消息和函数关联)
BEGIN_MESSAGE_MAP 在源文件中定义了2个static成员变量的初始化和一个函数的定义;
END_MESSAGE_MAP 在源文件中对结构体数组的定义的结尾语句
c)其他四个关键技术:运行时类型识别(RTTI)、动态创建、永久保存、和消息分发。
例如:设置窗口图标。
2、SendMessage和PostMessage函数都是消息传递函数,两个函数的格式:(面试题)
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
SendMessage和PostMessage这两个函数消息的区别是:
a)返回值类型不同:两个函数的4个参数的意义是一样的,只有返回值类型不同
(其实从数据上看他们一样是一个 32 位的数,只是意义不一样),
LRESULT 表示的是消息被处理后的返回值,BOOL 表示的是消息是不是传递成功。
b)PostMessage 是异步的,SendMessage 是同步的。
PostMessage 只把消息放入窗口消息队列中,不管消息被处理后的结果就返回;
而SendMessage等待消息被处理完了之后才返回。
c)如果在同一个线程内,常常使用SendMessage发送消息时,速度快并能得到返回的消息处理结果。
在不同线程或者进程之间,一般使用PostMessage发送消息,把消息先放入目标窗口的消息队列中,
然后由目标窗口通过消息循环自行派发处理。
3、消息的种类:
a)系统消息:0-WM_USER之间的数字:
b)用户消息:大于WM_USER以上的数字(程序员)
c)用户消息主要用于在窗口之间进行数据传递;
4、CWinApp类的成员介绍:
a)m_pszAppName:从CWinApp构造函数送入,如果没有送入去找StringTable,如果还没有最后找执行文件名;
b)m_hInstance:所有资源的总管:任何资源视图中的资源实际上都是通过这个句柄获取到的。
MFC六大关键技术的更多相关文章
- 深入浅出MFC——MFC六大关键技术仿真(二)
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...
- 剖析MFC六大关键技术(五六)--消息映射与命令传递
说到消息,在MFC中,“最熟悉的神秘”可算是消息映射,那是我们刚开始接触MFC时就要面对的东西.有过SDK编程经验的朋友转到MFC编程的时候,一下子觉得什么都变了样.特别是窗口消息及对消息的处理跟以前 ...
- 深入浅出MFC学习笔记 第三章 MFC六大关键技术之仿真
0:MFC类层次结构 1:MFC程序的初始化过程CWinApp::InitApplication()CMyWinApp::InitInstance()CMyFrameWnd::CMyFrameWnd( ...
- MFC六大核心机制之五、六:消息映射和命令传递
作为C++程序员,我们总是希望自己程序的所有代码都是自己写出来的,如果使用了其他的一些库,也总是千方百计想弄清楚其中的类和函数的原理,否则就会感觉不踏实.所以,我们对于在进行MFC视窗程序设计时经常要 ...
- MFC六大核心机制
MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为 ...
- VC++/MFC(VC6)开发技术精品学习资料下载汇总
工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...
- MFC六大核心机制之二:运行时类型识别(RTTI)
上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...
- MFC六大核心机制之一:MFC程序的初始化
很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下 ...
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...
随机推荐
- Java之路——环境配置与编译运行
本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...
- JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换
本篇博客我们就来聊一下Spring框架中的观察者模式的应用,即事件的发送与监听机制.之前我们已经剖析过观察者模式的具体实现,以及使用Swift3.0自定义过通知机制.所以本篇博客对于事件发送与监听的底 ...
- 模式识别(1)——PCA算法
作者:桂. 时间:2017-02-26 19:54:26 链接:http://www.cnblogs.com/xingshansi/articles/6445625.html 声明:转载请注明出处, ...
- 实现标签的添加与删除(tags)
在项目中会遇到,标签(tags)的添加与去除的需求 demo:我们有 tags '专利','商标','版权','域名' demand:在发布内容的时候,要求可以添加tag,(实现tag的增加与删除 ...
- Visual Studio Code 使用Chrome Debug 代码
一.添加插件 Debugger for Chrome,点击安装,安装完成之后,启动 二.配置启动参数 1.按 F5,出现界面如图,选择 Chrome 2.然后会打开配置文件 launch.json 3 ...
- java小题:福尔摩斯的约会
原题地址:https://www.nowcoder.com/pat/6/problem/4040 防止广告嫌疑,原题为: 题目描述 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485 ...
- Memetic Algorithm(文化基因算法)
1. 文化进化理论 威尔逊认为,从性质上来讲,文化进化总是以拉马克主义为特征的,即文化进化依赖于获得性状的传递,相对来说速度比较快:而基因进化是达尔文主义式的,依赖于经过几个世代的基因频率的改变,因而 ...
- JS&Jquery中的遍历
JavaScript中的遍历: 1.for 遍历 var anArray = ['one','two']; for(var n = 0; n < anArray.length; n++) { ...
- C++小技巧之CONTAINING_RECORD
CONTAINING_RECORD Containing record是一个在C++编程中用处很大的一种技巧,它的功能为已知结构体或类的某一成员.对象中该成员的地址以及这一结构体名或类名,从而得到该对 ...
- redis 压缩链表
redis 压缩链表 概述 压缩链表是相对于普通链表而言的 当普通链表的数据越来越多, 链表查询性能会低效 当存储的数据较少时, 使用链表存储会浪费空间 压缩链表本质上是一个字符串 压缩链表内存储的数 ...