模态对话框与非模态对话框

相关知识: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值