今天学习了MFC对话框程序设计,这里将一个小程序的步骤记录下来,是关于模态对话框和非模态对话框的。
1.创建一个基于对话框的项目,命名为Dialog;
2.添加两个对话框资源IDD_MODALDLG和IDD_NOMODALDLG
模态框:
非模态框:
3.为新添加的两个对话框资源添加CModalDlg类和CNoModalDlg类
4.在CDialogDlg类添加CModalDlg *ModalDlg和
CNoModalDlg *NoModalDlg两个成员,即两个对话框类的指针;
代码如下:
private:
CModalDlg *ModalDlg;
CNoModalDlg *NoModalDlg;
注意在CDialogDlg类中包含CModalDlg类和CNoModalDlg类的头文件
#include"ModalDlg.h"
#include"NoModalDlg.h"
5.修改CDialogDlg类的构造函数,即在初始化列表中初始化ModalDlg和NoModalDlg两个指针
代码如下:
CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CDialogDlg::IDD, pParent)
, ModalDlg(new CModalDlg)
, NoModalDlg(new CNoModalDlg)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
6.为主界面的按钮设置消息响应函数
void CDialogDlg::OnBnClickedBtnmodal()
{
// 创建模态对话框
ModalDlg->DoModal();
}
void CDialogDlg::OnBnClickedBtnnomodal()
{
// 创建非模态对话框
NoModalDlg->DestroyWindow();
NoModalDlg->Create(IDD_NOMODALDLG,this);
NoModalDlg->ShowWindow(SW_SHOW);
}
void CDialogDlg::OnBnClickedCancel()
{
// 关闭按钮
delete ModalDlg;
delete NoModalDlg;
CDialogEx::OnCancel();
}
7.同时将添加的两个对话框资源上的“关闭”按钮设置消息响应函数
void CModalDlg::OnBnClickedmodalclose()
{
// 关闭模态对话框,在ModalDlg.cpp中添加
CDialog::OnCancel();
}
void CNoModalDlg::OnBnClickednomodalclose()
{
// 销毁非模态对话框,在NoModalDlg.cpp中添加
CDialog::DestroyWindow();
}
8.最后调试程序就可以看到对话框了。
“`