第五章 对话框和常用控件
对话框是 Windows 应用程序中最重要的用户界面元素之一, 是与用户交互的重要手段, 在程序运行过程中,对话框可用于扑捉用户的输入信息或数据。对话框是一个特殊类型的 窗口,任何对窗口进行的操作(如:移动、最大化、最小化等)都可在对话框中实施,一 般来说,在对话框中通过各种控件(如:按钮、编辑框、列表框、组合框等)来和用户进 行交互。控件是在系统内部定义的用于和用户交互的基本单元。 一、对话框的使用 Visual C++提供的对话框编辑器能“可视”地进行设计、编辑,并可用 ClassWizard 为对话框从 CDialog 基类中派生一个类, MFC 的 CDialog 类封装了用于对话框 的显示、关闭等操作的许多功能函数,例如:DoModal 函数用来显示模式对话框并返回用 户操作的结果。 1、模式对话框(为 186 附加举例页) 所谓模式对话框是指,当对话被弹出时,用户必须在对话框中进行相应的操作,在退 出对话框之前,对话框所在的应用程序不能继续执行。平常我们所见到的对话框大多是模 式对话框。 例:模式对话框(通过菜单命令弹出) 1) 建一个单文档(SDI)应用程序 2) 创建对话框模板 Insert?Resource?选中 Dialog?单击 New 拖过一个静态文本,鼠标对准它,按右键点 properties 改标题为“新建模式对话框” 。 3) 鼠标右键对准对话框的任何位置单击, 选择 properties 选项, 设置 ID 为 IDD_MYDIALOG 4)给对话框创建类 双击新建对话框的任何位置,单击 OK,写类名为“CMyDlg” ,保 证”CDialog”作为该类的基类。 5)创建菜单命令: a) 打开资源编辑器的菜单项 Menu b) 双击 IDR_MAINFRAME c) 双击右边空白菜单,点开 pop_up(让它是空白),在名字处写”弹出对话框(&;A)”,ID 处写 ID_PUPDIALOG 6)将菜单命令连接到主框架程序中,完成 ID_PUPDIALOG 的消息映射: View?ClassWizard?保证 Class name 里是 CMainFrame,在 ObjectIDs 里找到 ID_PUPDIALOG 点黑?Messages 里(右边)点 COMMAND 建立主框架对象方法 并加代码: void CMainFrame::OnPupdialog() { CMyDlg MyDlg; MyDlg.DoModal(); //DoModal()是 CDialog 类成员函数,通过调用该 //函数将显示对话框。 } 7)在 CMainFrame.cpp 文件里加: #include “MyDlg.h” // 之后运行。 2、无模式对话框(为 186 附加页) 非模式对话框,弹出后,可一直保留在屏幕上,用户可继续在应用中进行其它操作或 启动其它应用程序,当需要使用对话框时,只需象激活一般窗口一样激活对话框即可。
1)建一个 SDI(单
文档)应用程序 2)创建对话框模板 Insert?Resource?点黑 Dialog?New 拖过一个静态文本,鼠标对准它,按右键点 properties 改标题为“新建非模
式对话框” 。 3)为对话框创建类 点出对话框(IDD_DIALOG1 缺省的 ID 号) ,双击对话框中的任意位置,出现一个表, 你点 OK?出现一个对话框,你写类名:CDlg 保证基类为 CDialog 4)创建菜单 打开工作区?Menu?IDR_MAINFRAME?双击空白菜单写“非模式对话框”关闭?再 点下面空菜单写名字“显示非模式对话框”ID 处写 ID_DLG. 5)添加菜单命令消息 Wiew?ClassWizard?Message Maps?保证 Class name 里是 Wiew 类(视图类) ,在 Object IDS 里找到 ID_DLG(菜单的 ID)点黑右边 COMMAND 双击它?OK 6)a、你在 Wiew.h 里加:#include “Dlg.h” b、在 public:里加:CDlg *dlg;//创建 CDlg 对象 c、在 View.cpp 的 OnDlg()函数里加: CMyView::OnDlg() { dlg=new CDlg(this); dlg->Create(IDD_DIALOG1);//使对话框摸板从资源中创建一个非 //模式对话框 dlg->ShowWindow(SW_RESTORE);//显示对话框 } 二、使用对话框编辑器(对话框编程) (187 页) *1、可建一个单
文档应用程序名为“对话框编程” ,在此
程序中加入一个对话框: Insert?Resource?点黑 Dialog?new 出