天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 60|回复: 0

c++ MFC创建对话框

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
c++ 创建对话框

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

2 添加两个子菜单,分别是“模式对话框”,ID为IDM_DIALOG1;“非模式对话框”,ID为IDM_DIALOG2.

3 在资源视图中的Dialog中添加一个对话框,ID为IDD_DIALOG1,并添加一个静态文本控件,Caption设置为“模式对话框”,

4 双击对话框空白处,在弹出的MFC类向导中命名类名为CTestDlg1,基类选择CDialog,之后完成。

5 同理添加另一个对话框,ID为IDD_DIALOG2。在MFC类向导中的类名设置为CTestDlg2,基类同样为CDialog.

6 打开IDR_MAINFRAME,右键选择“模式对话框”,在弹出的右键菜单中选择“添加事件处理程序”,在弹出的对话框中的“消息类型”选择COMMAND,类列表选择CDialogTestView,点击“添加编辑”,输入代码:

#include "TestDlg1.h"

CTestDlg1 dlg;
dlg.DoModal();



此时,模式对话框创建完毕。

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

#include "TestDlg2.h"

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

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

delete this;

CDialog::PostNcDestroy();

 

 

 

 

c++  MFC创建对话框
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 15:18 , Processed in 0.178437 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表