第9章和第10章


两章的代码: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】钮被按下后的动作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章