51对话框的使用 向对话框内添加控件 添加一个类 在对话框模板的非控件的区域内双击,如图的对话框。 单击[OK],弹出如图的对话框。可以为对话框资源定义一个新类名。 Class information Cancel IDD DIALOGI Is n new resource, Since it is MybIg. cpp new dass for It You can also seled ar existing dass. Base class: CDialog 6 Create a new class Dialog ID: IDD DIALOGI C Select an existing class Automation 图511“ Adding a class"对话框 r Automation C Crentenble by typr ID: Ex SDIHello MyDlp 图5.12“ New class”对话框
5.1对话框的使用 ➢ 向对话框内添加控件 ➢ 添加一个类 在对话框模板的非控件的区域内双击,如图的对话框。 单击[OK],弹出如图的对话框。可以为对话框资源定义一个新类名。 图5.11 “Adding a Class”对话框 图5.12 “New Class”对话框
51对话框的使用 消息映射 单击[OK]按钮,出现“ MFC Class Wizard对话框,如图 Project: Class name: Add Class. Ex SDIHell DA.\Ex SDIHellolMyDlg h, D:.Ex SDIHelloyMy DIg cpp Add Fumction Object IDs Delete Functio ID FILE SAVE CLICKED BN DOUBLECUICKED Edit Code ID NEXT PANE ID PREV PANE ID VIEW STATUS BAR IDC BUTTONI Ⅴ DoDataExchange Description: Cancel 图5.13“ MFC Class izaro对话框
5.1对话框的使用 ➢ 消息映射 单击[OK]按钮,出现“MFC ClassWizard”对话框,如图。 图5.13 “MFC ClassWizard”对话框
51对话框的使用 选定 IDC BUTTON的BN_ CLICKED,双击左键或单击[ Add Function按钮, 如图 对话框中,可以为添加的成员函数名重新定义,单击[OK]。选定成员函数 On Button1项,双击左键或单击[ Edit code按钮,在此成员函数添加代码。 不同资源对象(控件、菜单命令等)的消息是不相同的。例如,按钮控件 IDC BUTTON1的消息有两个: BN CLICKED和 BN DOUBLECLICKED,分别 表示当用户单击或双击该按钮时产生的消息。 般不需要对图5.10对话框中的oK](确定)与[ Cancel](取消)按钮进行消息 映射,因为系统已自动设置了这两个按钮的动作,当用户单击这两个按钮都 将自动关闭对话框。 Add■ eaber function 区 Member function name OK OnButton1 Cance Message: BN CLICKED Object ID: IDC BUTTONT 图514“ Add member function”对话框
5.1对话框的使用 选定IDC_BUTTON1的BN_CLICKED,双击左键或单击[Add Function]按钮, 如图。 对话框中,可以为添加的成员函数名重新定义,单击[OK]。选定成员函数 OnButton1项,双击左键或单击[Edit Code]按钮,在此成员函数添加代码。 ◆ 不同资源对象(控件、菜单命令等)的消息是不相同的。例如,按钮控件 IDC_BUTTON1的消息有两个:BN_CLICKED和BN_DOUBLECLICKED,分别 表示当用户单击或双击该按钮时产生的消息。 ◆ 一般不需要对图5.10对话框中的[OK](确定)与[Cancel](取消)按钮进行消息 映射,因为系统已自动设置了这两个按钮的动作,当用户单击这两个按钮都 将自动关闭对话框。 图5.14 “Add Member Function”对话框
51对话框的使用 >添加用户代码 (1)在头文件( MyDIg h文件)中声明消息处理函数 On Button1 protected //AFX_MSG( CMyDlg) afx_msg void OnButton1o //JAFX_MSG (2)在 MyDlg. cpp源文件开头部分的消息映射入口,添加消息映射宏: BEGIN_MESSAGE_ MAP(CMyDlg, CDialog) ∥/消息映射开始 //AFX_MSG_MAP(CMyDlg) ON_BNCLICKED(IDC_ BUTTON1, OnButton1) //YAFX MSG MAP END_MESSAGE_MAPO ∥/消息映射结束 表明消息及其处理函数之间的联系。单击按钮控件 FIDC BUTTON时,系统 将自动调用 On Button1函数。 (3)在 MyDIg, Cpp文件中写入一个空的消息处理函数的模板,以便用户填入 体代码,如下面的框架 void CMyDlg: OnButton1o //TODO: Add your control notification handler code here
5.1对话框的使用 ➢ 添加用户代码 (1)在头文件(MyDlg.h文件)中声明消息处理函数OnButton1: protected: //{{AFX_MSG(CMyDlg) afx_msg void OnButton1(); //}}AFX_MSG (2)在MyDlg.cpp源文件开头部分的消息映射入口,添加消息映射宏: BEGIN_MESSAGE_MAP(CMyDlg, CDialog) // 消息映射开始 //{{AFX_MSG_MAP(CMyDlg) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() // 消息映射结束 表明消息及其处理函数之间的联系。单击按钮控件IDC_BUTTON1时,系统 将自动调用OnButton1函数。 (3)在MyDlg.cpp文件中写入一个空的消息处理函数的模板,以便用户填入 具体代码,如下面的框架: void CMyDlg::OnButton1() { // TODO: Add your control notification handler code here }
51对话框的使用 在程序中使用对话框 (1)利用项目工作区的 Classview标签项,将 Ex SDIHello.cpp源文件打开; (2)在 Ex SDIHello.cpp源文件的前面加上包含类 CMyDIg的头文件: #include "MyDlg h (3)在 InitInstance函数体中的“ return true;”语句之前添加下列代码 CMyDlg dlg dIg DoModal DoModal是模式对话框最常用的函数,它负责对话框的显示和终止。 (4)编译并运行。在程序的一开始就出现用户自己设计的对话框,单击 [ Button1]按钮将弹出“欢迎进入对话框的设计!”的消息对话框来
5.1对话框的使用 ➢ 在程序中使用对话框 (1)利用项目工作区的ClassView标签项,将Ex_SDIHello.cpp源文件打开; (2)在Ex_SDIHello.cpp源文件的前面加上包含类CMyDlg的头文件: #include "MyDlg.h" (3)在InitInstance函数体中的“return TRUE;”语句之前添加下列代码: CMyDlg dlg; dlg.DoModal(); DoModal是模式对话框最常用的函数,它负责对话框的显示和终止。 (4)编译并运行。在程序的一开始就出现用户自己设计的对话框,单击 [Button1]按钮将弹出“欢迎进入对话框的设计!”的消息对话框来