VC++创建对话框

 对话框有模式对话框和非模式对话框两种。以下用基于Visual Studio 2008的MFC为例,创建一个程序。

首先创建一个MFC单文档应用程序,名称为DialogTest.打开资源视图——Menu——IDR_MAINFRAME,在菜单栏中添加一个标签“对话框测试”,ID设置为IDM_DIALOGTEST,在属性中把popup属性设置为false.添加两个子菜单,分别是“模式对话框”,ID为IDM_DIALOG1;“非模式对话框”,ID为IDM_DIALOG2.

之后在资源视图中的Dialog中添加一个对话框,并添加一个静态文本控件,Caption设置为“模式对话框”,ID为IDD_DIALOG1,双击对话框空白处,在弹出的MFC类向导中命名类名为CTestDlg1,基类选择CDialog,之后完成。同理添加另一个对话框,ID为IDD_DIALOG2。在MFC类向导中的类名设置为CTestDlg2,基类同样为CDialog.

完成资源的添加后,我们就要完善代码。再次打开IDR_MAINFRAME,右键选择“模式对话框”,在弹出的右键菜单中选择“添加事件处理程序”,在弹出的对话框中的“消息类型”选择COMMAND,类列表选择CDialogTestView,点击“添加编辑”,输入代码:

CTestDlg1 dlg;
dlg.DoModal();

此时,模式对话框创建完毕。相对于模式对话框来说,非模式对话框的创建相对复杂一点。同样是再次打开IDR_MAINFRAME,右键选择“非模式对话框”,在弹出的右键菜单中选择“添加事件处理程序”,在弹出的对话框中的“消息类型”选择COMMAND,类列表选择CDialogTestView,点击“添加编辑”,输入代码:

CTestDlg2 *pDlg=new CTestDlg2;
pDlg->Create(IDD_DIALOG2,this);
pDlg->ShowWindow(SW_SHOW);

在这里,我将对话框对象定义为指针,在堆上分配内存,使其与程序的生命周期一致。之后用Creat()函数创建一个对话框,并用ShowWindow()将其显示出来。这里用到了指针指向操作符,只因为定义的对话框对象为指针类型,且调用了其成员函数(有C++基础的都会明白这一点吧......)。由于pDlg这个指针变量为局部对象,当其生命周期结束后,其保存的内存地址就会丢失。所以我们应该在CTestDlg2类中重载PostNcDestroy这个虚函数来释放this指针指向的内存。只需在这个函数中添加一句:

delete this;

CDialog::PostNcDestroy();

因为我们在程序中使用了CTestDlg1,CTestDlg2,CDialogTestView类并不清楚其数据类型。因此我们要在DialogTestView.cpp开始出添加:

#include "TestDlg1.h"
#include "TestDlg2.h"

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值