运行了。 ClassWizard 类向导
1.4
ClassWizard 称为类向导, 能为一个项目添加一个类, 进行消息和数据映射, 创建 OLE Automation(自动化)属性和方法以及进行 ActiveX 事件处理等。 1.4.1 ClassWizard 的使用 例5 在窗口上按下鼠标左键就能显示一个对话框。
(1)建一个单
文档的应用程序名为:显示对话框 (2)ViewClassWizard(或使用 Ctrl + W)选中 Message Maps 在 Class name 框下
拉选中 CMyView(视图类)在 Object IDs 框选中 CMyView 在 Messages 框找到鼠标左键 按下的映射消息:WM_LBUTTONDOWN,见图1.4.1单击 Add Function 单击 Edit Code (3)在视图类中刚刚添加的 OnLButtonDown()函数中填代码: void CMyView: :OnLButtonDown(UINT nFlags, CPoint point) { MessageBox(“攀登
计算机科学高峰”,“鼠标左键按下消息”,0) ; CView: :OnLButtonDown(nFlags, point) ; } (4)编译运行,你在程序窗口中,按下鼠标左键,就出现如图1.4.2所示的对话框。 该程序就使用了 ClassVizard(类向导) ,将“鼠标左键按下”的消息映射到项目的视图 类中,完成了程序要达到的目的。
注
意:在程序中的
文档编辑窗口中单击鼠标右键,从弹出的快捷菜单中也能选择
ClassVizard 命令。 可以看到“MFC ClassWizard”对话框包含了5个标签页面,其中最
常用的有2个,它们 是: 1、Message Maps(消息映射) :用于添加、删除和编程处理消息的成员函数。 2、Member Variables(成员变量) :添加或删除与控件相关联的成员变量(或称为数 据成员) ,以便与控件进行数据交换。 如上程序
设计中用到了“Message Maps”页面(图1.4.1)
,表1.3列出了其中的各项功 能。 表1. 3“ClassWizard”对话框的 Message Maps 页面各项功能
1.4.2 消息和消息映射 Windows 编程与其他类型编程的最大不同之处在于使用消息机制。在 Windows 中发 生的一切都可以使用消息作为媒体来表示。 消息用于告诉操作系统发生了什么, 例如用户的 键击操作、鼠标操作、打印操作等都可以用消息来传递。窗口之间也可以使用消息来
通信。 可以说,消息机制是 Windows 应用程序的核心。 1、Windows 消息 在 Windows 中,所有消息都是通过各自的名字来访问的,当然对于不同的操作
系统 使用不同的数值来标记它们。一系列 #define 语句将消息与特定数值相联系,例如,下面的 语句定义了一条叫做 WM_PAINT 的消息: #define WM_PAAINT 120
我们可以在程序中通过此消息名“WM_PAINT 来访问它。此定义我们将在本章例9中用 到。 在 Windows 中,不同的消息由应用程序的不同部分进行处理。例如:我们在窗口中 的某个控件上右击鼠标键,该控件将会接收一条 WM_RBUTTONDOWN 消息,相应的程序
就会处理这条消息。例如我们在窗口中按下鼠标右键,就会弹出一个快捷菜单等。 2、消息分类 (1)窗口消息(Windows message) : 窗口消息主要是指 WM___开头的消息(WM_COMMAND 除外) ,一般由窗口类和视 图类对象来处理,窗口消息往往带有参数,以标志处理消息的方法。窗口消息包括:
1)鼠标消息(见图1.4.3所示) WM_MOUSEMOVE WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK 鼠标移动时发送该消息 鼠标左键被按下时发送该消息 鼠标左键被释放时发送该消息 鼠标左键被双击时发送该消息 鼠标右键被按下时发送该消息 鼠标右键被释放时发送该消息 鼠标右键被双击时发送该消息 鼠标中键被按下时发送该消息 鼠标中键被按释放时发送该消息 鼠标中键被双击时发送该消息
2)键盘消息(见图1.4.4) WM_CHAR WM_KEYDOWN WM_KEYUP 将一次单击键翻译成一个非系统字符时,发送该消息 按下一个非系统键盘时,发送该消息 释放一个非