对于每个菜单项,系统提供了 COMMAND和 UPDATE COMMAND U两种消息可供选择 (1) COMMAND消息需要用户的干预,如单击、双击等 操作 (2) UPDATE COMMAND U消息系统会自动进行响应, 通过它可以实现对菜单项外观的动态管理。例如,设计 人员可以使菜单有效、无效或给菜单项动态添加检査 记等。 可以利用 Class Wizard同时设置这两种消息,但是在实 际编程中,必须为每个菜单项提供有关 WM COMMAND 类型消息映射接口。 下面,我们在视图类中对前面已建立的“个人资料 (&D)”菜单项的消息做出响应。具体步骤如下 U回
返回 11 对于每个菜单项 , 系 统 提 供 了 COMMAND 和 UPDATE_COMMAND_UI两种消息可供选择: (1)COMMAND消息需要用户的干预,如单击、双击等 操作; (2)UPDATE_COMMAND_UI消息系统会自动进行响应, 通过它可以实现对菜单项外观的动态管理。例如,设计 人员可以使菜单有效、无效或给菜单项动态添加检查标 记等。 可以利用ClassWizard同时设置这两种消息,但是在实 际编程中,必须为每个菜单项提供有关WM_COMMAND 类型消息映射接口。 下面,我们在视图类中对前面已建立的“个人资料 (&D)”菜单项的消息做出响应。具体步骤如下:
步骤一:选择【Vew】菜单中的【 Class Wizard)】菜单项, 弹出【 MFC Class Wizard】对话框。 骤二:在【 Mfc Class Wizard】对话框中,选择 Message Maps】选项卡。在【 Class name】下拉列表框 中,选择类 CDialog view;在【 Object Ids】中单击选择 ID DISPLAY_DATA选项;在【 Messages】栏中将出现 COMMAND和 UPDATE COMMAND U两个选项,选中 其中的 COMMAND。 步骤三:单击对话框右侧的【 Add function】按钮,系统 将会弹出【 Add member function)对话框。系统将自动 生成一个缺省名称为 OnDisplay Data的映射函数亦可另取 别的名称,在此取缺省名称,单击【OK】按钮继续。 步骤四:单击【 Edit code】按钮退出【 MfC Class Wizard】 对话框,并编辑新增加的函数 OnDisplay data U回
返回 12 步骤一:选择【View】菜单中的【ClassWizard】菜单项, 弹出【MFC ClassWizard】对话框。 步骤二: 在 【MFC ClassWizard】 对话框中 , 选 择 【Message Maps】选项卡。在【Class name】下拉列表框 中,选择类CDialogView;在 【Object Ids】中单击选择 ID_DISPLAY_DATA 选项;在 【Messages】 栏中将出现 COMMAND和 UPDATE_COMMAND_UI两个选项,选中 其中的 COMMAND。 步骤三:单击对话框右侧的【Add Function】 按钮,系统 将会弹出【Add Member function】对话框。系统将自动 生成一个缺省名称为OnDisplayData的映射函数亦可另取 别的名称,在此取缺省名称,单击【OK】按钮继续。 步骤四:单击【Edit Code】按钮退出【MFC ClassWizard】 对话框,并编辑新增加的函数OnDisplayData
经过以上操作完成后,Ⅴ isual c++会对程序中的一些程 序文件的代码进行必要的修改,其中粗体部分的代码是 由 Class Wizard自动添加的代码。 1.在 CDialog view类的定义文件 Dialog View. ht中的消息映 射部分将会改变为: / Generated message map functions protected AFⅹMSG( CDialog view) afx msg void OnLButtonDbICIkqUinT nFlags, CPoint point afx msg void OnDisplayDataO;∥ Class wizard自动添加的 JAFX MSG DECLARE MESSAGE MAPO U回
返回 13 经过以上操作完成后,Visual C++会对程序中的一些程 序文件的代码进行必要的修改,其中粗体部分的代码是 由ClassWizard自动添加的代码。 1. 在CDialogView类的定义文件DialogView.h中的消息映 射部分将会改变为: // Generated message map functions protected: //{{AFX_MSG(CDialogView) afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnDisplayData(); //ClassWizard自动添加的 //}}AFX_MSG DECLARE_MESSAGE_MAP() };
其中: AFX MSG(CDialog view) JAFX MSG 是 Class Wizard分别用来识别命令消息处理函数定义的起 始标记和结束标记,在 AFX MSG( CDialog view)后面括号 内的 CDialog view表示是处理该消息的类。 2.在 CDialog view类的实现文件 Dialog View.cpp中的消息 映射部分也进行了一些修改: BEGIN MESSAGE MAP(CDialog View, CView) /RAFX MSG MAP(CDialog View) U回
返回 14 其中: //{{AFX_MSG(CDialogView) …… //}}AFX_MSG 是ClassWizard分别用来识别命令消息处理函数定义的起 始标记和结束标记,在AFX_MSG(CDialogView)后面括号 内的CDialogView表示是处理该消息的类。 2. 在CDialogView类的实现文件DialogView.cpp中的消息 映射部分也进行了一些修改: BEGIN_MESSAGE_MAP(CDialogView, CView) //{{AFX_MSG_MAP(CDialogView)
ON WM LBUTTONDBLCLKO ON COMMANDOID DISPLAY DATA OnDisplaydata)∥ Class wizard自动添加的 JAFX MSG MAP END MESSAGE MAPO 其中: /AFX MSG MAP(CDialog View) IJAFX MSG MAP 是 Class Wizard标识命令消息处理映射机制的起始标记和结 束标记 U回
返回 15 ON_WM_LBUTTONDBLCLK() ON_COMMAND(ID_DISPLAY_DATA, OnDisplayData) //ClassWizard自动添加的 //}}AFX_MSG_MAP END_MESSAGE_MAP() 其中: //{{AFX_MSG_MAP(CDialogView) …… //}}AFX_MSG_MAP 是ClassWizard标识命令消息处理映射机制的起始标记和结 束标记