相关知识:MFC中的每一个框都绑定了一个类
按钮:cbutton 编辑框:cedit 对话框:cdialog(class cdialog : public CWnd // 类 cdialog 派生于 CWnd)
1.特点:模态对话框不能操作主对话框,非模态对话框可以
2.步骤
2.1插入对话框资源模板
资源视图→rc→dialog(右键)→Insert Dialog
2.2相关类的绑定
新建的对话框(右键)→Add class →class name(CMyDialog),Base class(CDialog),.h和.cpp文件已经自动创建好→完成
3.对话框的建立
3.1模态对话框的建立
在主对话框.cpp文件中加 #include"MyDialog.h" → 在某个按钮的响应函数里
void CMFCApplication2Dlg::OnBnClickedButton1()
{
cmydialog dig;
dig.DoModal();
}
3.2非模态对话框的建立
3.2.1以全局变量的方式建立
cmydialog2 dig2; //放到按钮响应函数的外面
void CMFCApplication2Dlg::OnBnClickedButton2()
{
dig2.Create(非模态对话框ID);
dig2.ShowWindow(SW_SHOW);
}
如何在对话框关闭时消去内存
点Cancel 和点x关闭对话框
类视图→CMyDialog→属性→重载→OnCancel
非模态不需要CDialog::OnCancel();
加上DestroyWindow();
点OK关闭对话框
双击“OK”按钮,在它的响应函数里
不需要OnOK();
加上DestroyWindow();
3.2.2以new的方式建立
在主对话框.h文件中, 添加头文件 #include “cmydialog3.h” ,以及 cmydialog3 * pdlg;
在主对话框.cpp文件中加 #include"MyDialog.h" ,以及按钮的响应函数中
void CMFCApplication2Dlg::OnBnClickedButton3()
{
pdlg = new cmydialog3();
pdlg->Create(IDD_DIALOG3);
pdlg->ShowWindow(SW_SHOW);
}
如何在对话框关闭时消去内存
类视图→CMyDialog3→属性→重载→PostNcDestroy
直接加 Delete this;
4.对话框的初始化
类视图→CMyDialog→属性→重载→OnInitDialog