10.3 对话框的创建与显示
前面介绍过对话框分为模态对话框和非模态对话框,区别在于打开对话框后,关闭前是否可以与其他对话框进行数据交换。根据不同情况选择不同的对话框样式,如在绘图软件中,打开的图层管理面板需要使用非模态对话框。同时,在程序中可以修改对话框的背景颜色。最后讲述了有关关闭对话框的处理。
10.3.1 创建模态对话框
要使用模态对话框,首先调用CDialog类的构造函数,然后调用DoModal()成员函数显示对话框和管理与用户的交互,直到用户选择OK按钮或Cancel按钮。前面介绍过OnInitDialog()函数中处理一些对话框初始化的工作。对于模态对话框,在DoModal()调用时发生。对于非模态对话框,在Create调用时被调用。一般的用户都会重写OnInitDialog()函数初始化对话框的控件,如设置编辑框的初始文本。以下代码显示了如何创建模态对话框。
- void CDialogExampleDlg::OnButtonModal()
// 模态对话框测试按钮处理函数 - {
- CDlgTest dlg;
// 定义测试对话框变量 - if (dlg.DoModal() == IDOK)
// 如果用户选择OK退出 - { // 用户单击OK命令
- }
- else
// 否则用户选择Cancel退出 - { // 用户单击Cancel命令
- }
- }
上面代码首先定义了对话框变量,然后调用DoModal()函数,打开模式对话框。打开的对话框就变成了程序的最顶层对话框。程序在if语句的两个分支中分别处理当用户单击OK按钮和Cancel按钮后需要执行的操作。程序运行效果图如图10-14所示。
|
| 图10-14 模态对话框 |