深入浅出MFC[摘记]
1.Windows程序的运行本质:基于消息,事件驱动(Message Based,Event Driven).
2.程序调用GetMessage API循环获取消息,程序的生命靠它来推动.
MSG msg;
while (GetMessage(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
3.WinMain 的四个参数由操作系统传递进来.
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
4.TranslateMessage 是为了将键盘消息转化,DispatchMessage 会将消息传给窗口函数去处 理.DispatchMessage 经过USER 模块的协助,才把消息交到窗口函数.
5.Call back 函数,意思是指[在你的程序中,被Windows系统调用]的函数。这些函数虽然由你设计,但是永远不会也不该被你调用,它们是为Windows系统准备的.
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
6.WndPro函数的Switch的default必须调用:DefWindowProc,这是Windows内部预设的消息处理函数.
7.Message Map:消息或系统命令在列表中绑定通用格式的函数(函数指针),在WndPro中对消息或系统命令对比,调用相应的绑定函数.
8.Modal对话框的激活与结束,靠的是DialogBox和EndDialog两个API函数.处理过消息之后,应该传回TRUE;如果未处理消息,则应该传回FALSE.
9.执行线程的结束有两种情况,一种是寿终正寝(ExitThread),一种是未得善终(TerminateThread).
10.执行线程的优先权范围从0(最低)到31(最高).
11.由行为决定设计,怎么用从而怎么达到目的的设计结构.
12.[对象,封装,类][继承,衍生,子类继承父类所有的成员变量和函数][虚函数代表衍生,继承函数接口,变异函数内容]
13.调用父类别的函数,你必须使用scope resolution operator(::)明确指出.
14.(虚函数除外)调用到哪个函数,必须视指针的原始类型而定,与指针实际所指之对象无关.
15.如果你预期衍生类别有可能重新定义某一个成员函数,那么你就在基础类别中把此函数设为virtual.
16.相同的指令却唤起了不同的函数,这种性质称为Polymorphism(多态).Polymorphism的目的,就是要让处理[基础类别之对象]的程序代码,能够完全透通地继续适当处理[衍生类别之对象].
17.纯虚拟函数不需定义其实际动作,它的存在只是为了在衍生类别中被重新定义,只是为了提供一个多态接口.
18.虚拟函数衍生下去仍为虚拟函数,而且可以省略virtual 关键词.
19.静态Static成员变量在类外初始化,独立于对象之外.static 成员函数[没有this 参数]的这种性质,不需要借助任何对象,就可以被调用执行.
20.C++的template有两种,一种针对function,另一种针对class.
21.在程序的任何地方放置TRACE宏,例如:TRACE("Hello World");
22.CObject是万类之首,凡类别衍生自CObject者,得以继承数个对象导向重要性质.
23.AfxOutputDebugString 将字符串输往Debug调试器.
24.CWinApp代表程序本体.CFrameWnd代表一个主框窗口(Frame Window).
25.要把某个函数用作callback 函数,就必须告诉C++ 编译器,不要放this指针作为该函数的最后一个参数。两个方法可以做到这一点:1. 不要使用类别的成员函数(也就是说,要使用全域函数)做为callback 函数。2. 使用static 成员函数。也就是在函数前面加上static修饰词。
26.凡声明为static 的东西(不管函数或变量)都并不和对象结合在一起,它们是类别的一部份,不属于对象。
27.有关文件读写的动作在CDocument 的Serialize 函数进行,有关画面显示的动作在CView 的OnDraw或OnPaint 函数进行。
28.任何一个类别只要在声明时使用DECLARE_DYNAMIC或DECLARE_DYNCREATE 或DECLARE_SERIAL宏,就会拥有一个静态的(static)CRuntimeClass 内嵌对象。
29.执行线程函数的执行期,也就是该执行线程的生命期。
深入浅出MFC[摘记]的更多相关文章
- 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>
侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而 ...
- 深入浅出MFC——Document-View深入探讨(五)
1. MFC之所以为Application Framework,最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来,这种能力由MFC的Document/View提供.Doc ...
- 深入浅出MFC——MFC六大关键技术仿真(二)
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...
- 《深入浅出MFC》下载
百度云及其他网盘下载地址:点我 编辑推荐 <深入浅出MFC>内含光盘一片,书中所有原始码与可执行文件尽在其中. 作者简介 侯俊杰,先生不知何许人也,闲静少言,不慕荣利.好读书,求甚解:每有 ...
- 《深入浅出MFC》系列之运行时类型识别(RTTI)
/********************************************************************************** 发布日期:2017-11-13 ...
- 深入浅出MFC——MFC多线程程序设计(七)
1. 从操作系统层面看线程——三个观念:模块(MDB).进程(PDB).线程(TDB) 2. “执行事实”发生在线程身上,而不在进程身上.也就是说,CPU调度单位是线程而非进程.调度器据以排序的,是每 ...
- 深入浅出MFC——消息映射与命令传递(六)
1. 消息分类: 2. 万流归宗——Command Target(CCmdTarget): 3. "消息映射"是MFC内建的一个信息分派机制.通过三个宏(DECLARE_MESSA ...
- 深入浅出MFC——MFC骨干程序(四)
1. 熟记MFC类层次结构: 2. AppWizard可以为我们制作出MFC程序骨干: 3. Document/View支撑你的应用程序:Document/View的价值在于,这些MFC类已经把一个应 ...
- 深入浅出MFC——MFC程序的生死因果(三)
1. 本章主要目的:从MFC程序代码中检验出一个Windows程序原本该有的程序进入点(WinMain).窗口类注册(RegisterClass).窗口产生(CreateWindow).消息循环(Me ...
随机推荐
- Bootstrap_媒体对象
一.基本媒体对象 媒体对象一般是成组出现,而一组媒体对象常常包括以下几个部分: ☑ 媒体对像的容器:常使用“media”类名表示,用来容纳媒体对象的所有内容 ☑ 媒体对像的对象:常使用“media-o ...
- Android 录音器
Android自带的mediarecoder录音器不含pause暂停功能,解决方法:录制多个音频片段,最后合成一个文件. 参照 : http://blog.csdn.net/a601445984/ar ...
- 22.mongodb副本集集群
软件版本64位: $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz mongo ...
- CocoaPods使用 主要带图。转载。
原文地址 快速更新,不需要查找更新库 命令:pod update --verbose --no-repo-update 虽然网上关于CocoaPods安装教程多不胜数,但是我在安装的过程中还是出现了 ...
- 使用Gson转换json数据为Java对象的一个例子
记录工作中碰到的一个内容. 原料是微信平台的一个接口json数据. { "errcode" : 0, "errmsg" : "ok", &q ...
- Jenkins + maven + Git+selenium
1.在Jenkins中配置Maven与Git 1)在系统管理>管理插件>可选插件 页面分别下载Git plugin 与 Maven Integration plugin插件,安装完成后再已 ...
- 2014最后一天,好烦!这个问题从来没遇到过!网上查找了很多办法都没解决!并且no wifi 了!
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread ...
- [MVC_Json序列化]MVC之Json序列化循环引用
在做MVC项目时,难免会遇到Json序列化循环引用的问题,大致错误如下 错误1:序列化类型为“...”的对象时检测到循环引用. 错误2:Self referencing loop detected f ...
- iOS9 3DTouch开发
在iOS 9中,新iPhone将第三维度添加到了用户界面. 用户现在可以用力摁下主屏按钮来快速调出应用提供的功能菜单. 在应用中,用户现在可以用力摁下视图以查看更多内容的预览并且快速访问一些功能. 想 ...
- Android开发之Git配置
Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...