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[摘记]的更多相关文章

  1. 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>

    侯捷的<深入浅出mfc>相信大家都已经很熟悉了,论坛上也有很多介绍,这里我就不多说了. 而李久进的<mfc深入浅出>,听说的人可能就少得多.原因听说是这本书当时没有怎么宣传,而 ...

  2. 深入浅出MFC——Document-View深入探讨(五)

    1. MFC之所以为Application Framework,最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来,这种能力由MFC的Document/View提供.Doc ...

  3. 深入浅出MFC——MFC六大关键技术仿真(二)

    1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...

  4. 《深入浅出MFC》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <深入浅出MFC>内含光盘一片,书中所有原始码与可执行文件尽在其中. 作者简介 侯俊杰,先生不知何许人也,闲静少言,不慕荣利.好读书,求甚解:每有 ...

  5. 《深入浅出MFC》系列之运行时类型识别(RTTI)

    /********************************************************************************** 发布日期:2017-11-13  ...

  6. 深入浅出MFC——MFC多线程程序设计(七)

    1. 从操作系统层面看线程——三个观念:模块(MDB).进程(PDB).线程(TDB) 2. “执行事实”发生在线程身上,而不在进程身上.也就是说,CPU调度单位是线程而非进程.调度器据以排序的,是每 ...

  7. 深入浅出MFC——消息映射与命令传递(六)

    1. 消息分类: 2. 万流归宗——Command Target(CCmdTarget): 3. "消息映射"是MFC内建的一个信息分派机制.通过三个宏(DECLARE_MESSA ...

  8. 深入浅出MFC——MFC骨干程序(四)

    1. 熟记MFC类层次结构: 2. AppWizard可以为我们制作出MFC程序骨干: 3. Document/View支撑你的应用程序:Document/View的价值在于,这些MFC类已经把一个应 ...

  9. 深入浅出MFC——MFC程序的生死因果(三)

    1. 本章主要目的:从MFC程序代码中检验出一个Windows程序原本该有的程序进入点(WinMain).窗口类注册(RegisterClass).窗口产生(CreateWindow).消息循环(Me ...

随机推荐

  1. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  2. 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼

    今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120       LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000K ...

  3. 【leetcode❤python】 155. Min Stack

    #-*- coding: UTF-8 -*- class MinStack(object):    def __init__(self):        """      ...

  4. ognl.OgnlException: target is null for setProperty(null, "emailTypeNo", [Ljava.lang.String;@1513fd0)

    [com.opensymphony.xwork2.ognl.OgnlValueStack] - Error setting expression 'emaiTypeDto.emailTypeNo' w ...

  5. 。Java中的一些小细节

    1.main方法. ------任何一个Java程序都有一个main方法,它是程序的入口. ------当执行  “ java + 类名 “  这个命令时,JVM就会去加载这个类,并且寻找这个类中的m ...

  6. Arduino 极速入门系列 - 光控灯(1)- 关于理论和 LED 那些事

    点个 LED 闪亮好像太单调,这次来个光控 LED 灯.这个其实不需要 Arduino 也能做,这次只是用来演示一下 PWM 在 Arduino 里面的做法.PWM 原理后面会解释.这次用充电宝提供 ...

  7. R中数据拆分和整合

    library(data.table)ID <- c(NA,1,2,2)IDTime <- c(1,2,NA,1)TimeX1 <- c(5,3,NA,2)X1X2 <- c( ...

  8. SQL Server Reporting Service(SSRS) 第三篇 SSRS Matrix用法

    以前不是太清楚SSRS的功能,自从最近有了了解之后,发现它的功能的确很强大.对于Matrix,刚开始我竟不知道它到底有什么用,现将通过一个例子中去理解Matrix,以及和分组Group结合使用的便利性 ...

  9. mybatis-缓存1

    以下转自:http://www.cnblogs.com/weidiao/p/5469046.html mybatis有两级缓存机制,一级缓存默认开启,可以在手动关闭:二级缓存默认关闭,可以手动开启.一 ...

  10. Spring IOC/DI- 3 different types

    理论: IOC(Inversion of Control控制反转) DI(依赖注入) (Dependency Injection)   它不是一种技术而是一种思想.当初IOC理论的提出就是为了解决对象 ...