两章的代码:http://download.csdn.net/detail/caidaoqq/6951975点击打开链接
第九章:消息映射与命令绕行
1.MFC把消息分为三大类:
■ 命令消息(WM_COMMAND):命令消息意味着「使用者命令程序做某些动作」。
凡由UI 对象产生的消息都是这种命令消息,可能来自菜单或加速键或工具栏按钮,并且都以WM_COMMAND 呈现。如何分辨来自各处的命令消息?SDK程序主要靠消息的wParam 辨识之,MFC 程序则主要靠菜单项目的识别码(menu ID)辨识之-- 两者其实是相同的。
凡衍生自CCmdTarget 者,它的骨子里就有了一种特殊的机制。可接受WM_COMMAND消息;
■ 标准消息- 除WM_COMMAND 之外,任何以WM_ 开头的都算是这一类。任何
衍生自CWnd 之类别,均可接收此消息。
■ Control Notification -这种消息由控制组件产生,为的是向其父窗口(通常是对框)通知某种情况。
2.命令消息必须有一个对应的处理函数,把消息和其处理函数「绑」在一块儿,这动作称为CommandBinding,这个动作将由一堆宏完成。
3.三个奇怪的宏,一张巨大的网
Message Map 既可说是一套宏,也可以说是宏展开后所代表的一套数据结构;甚至也可以说Message Map 是一种动作,这个动作,就是在刚刚所提的资料结构中寻找与消息相吻合的项目,从而获得消息的处理例程的函数指针。
1. 消息分类的原因:因为它们的上溯路径不是那么单纯地只往父类别去,它们可能需要拐个弯。
2.
第10章MFC与对话框
1. 设计对话框模板,有两个重要的步骤,第一是从工具箱中选择控制组件(control,功能
各异的小小零组件)加到对话框中,第二是填写此一控制组件的标题、ID、以及其它性
质。
2. 利用ClassWizard 连接对话框与其专属类别
a. 从MFC 的CDialog 中衍生出一个类别,用来负责对话框行为。
b. 利用ClassWizard 把这个类别和先前你产生的对话框资源连接起来。通常这意
味着你必须声明某些函数,用以处理你感兴趣的对话框消息,并将对话框中的
控制组件对应到类别的成员变量上,这也就是所谓的DialogData eXchange
(DDX)。如果你对这些变量内容有任何「确认规则」的话,ClassWizard 也
允许你设定之,这就是所谓的Dialog DataValidation(DDV)。
3. 对话框的消息处理函数
a. 在CPenWidthsDlg 中增加两个变量,分别代表粗笔与细笔的宽度。
b. 在CPenWidthsDlg 中增加一个函数,负责【Default】钮被按下后的动作