摘要:本篇VC编程技术教程将为大家讲解VC编程技术的知识点,看完这篇文章会让你对VC编程技术的知识点有更加清晰的理解和运用。
本篇VC编程技术教程将为大家讲解VC编程技术的知识点,看完这篇文章会让你对VC编程技术的知识点有更加清晰的理解和运用。
以下实例是基于对话框的工程,实现两个按钮分别控制两个非模态对话框,且保证每个非模态对话框只存在一个实例。
1、新建一个基于对话框(Dialog Based)工程,名称为Demo
2、在主窗口上添加2个按钮并设置其属性
Button1的ID:IDC_Btn1 caption:按钮一
Button2的ID:IDC_Btn2 caption:按钮二
3、再添加2个对话框,分别修改它们的ID和Caption属性
IDD_DIALOG1的ID:IDD_Dlg1 Caption:窗口一
IDD_DIALOG2的ID:IDD_Dlg2 Caption:窗口二
4、为新建的2个对话框新建类,类名分别为CDlg1、CDlg2
5、在DemoDlg.h头文件中定义非模态对话框指针,定义为公共类型
[cpp] view plain copy
1. public:
2. CDemoDlg(CWnd* pParent = NULL); // standard constructor
3. CDlg1 *pdlg1; //定义非模态对话框指针
4. CDlg2 *pdlg2; //定义非模态对话框指针
记得在顶部添加头文件
#include "Dlg1.h"
#include "Dlg2.h"
6、打开DemoDlg.cpp文件找到 BOOL CDemoDlg::OnInitDialog()对话框初始化并在其后面初始化刚定义的非模态对话框指针,代码如下:
[cpp] view plain copy
1. SetIcon(m_hIcon, TRUE); // Set big icon
2. SetIcon(m_hIcon, FALSE); // Set small icon
3.
4. // TODO: Add extra initialization here
5. pdlg1=NULL;//指针初始化
6. pdlg2=NULL;//指针初始化
7.
8. return TRUE; // return TRUE unless you set the focus to a control
7、双击主界面上的“按钮一”写事件代码
[cpp] view plain copy
1. void CDemoDlg::OnBtn1()
2. {
3. // TODO: Add your control notification handler code here
4. if(pdlg1==NULL)
5. {
6. pdlg1=new CDlg1; //实例化非模态对话框指针
7. pdlg1->Create(IDD_Dlg1,GetDesktopWindow());//把GetDesktopWindow() 改成this创建的对话框就不在任务栏中显示了
8. }
9. else
10. {
11. pdlg1->BringWindowToTop(); //对话框置前
12. }
13.
14. pdlg1->ShowWindow(SW_SHOW); //显示非模态对话框
15. pdlg1->UpdateWindow(); //更新非模态对话框中的各个控件
16. }
17.
18. void CDemoDlg::OnBtn2()
19. {
20. // TODO: Add your control notification handler code here
21. if(pdlg2==NULL)
22. {
23. pdlg2=new CDlg2; //实例化非模态对话框指针
24. pdlg2->Create(IDD_Dlg2,GetDesktopWindow());//把GetDesktopWindow() 改成this创建的对话框就不在任务栏中显示了
25. }
26. else
27. {
28. pdlg2->BringWindowToTop(); //对话框置前
29. }
30.
31. pdlg2->ShowWindow(SW_SHOW); //显示非模态对话框
32. pdlg2->UpdateWindow(); //更新非模态对话框中的各个控件
33. }
以上是“按钮一”、“按钮二”的代码。当关闭主窗口时还要释放非模态对话框所占的资源,现在为主窗口添加WM_ON_CLOSE消息,编写如下的代码释放所占的的资源:
[cpp] view plain copy
1. void CDemoDlg::OnClose()
2. {
3. // TODO: Add your message handler code here and/or call default
4. if(pdlg1 !=NULL) delete pdlg1; //释放非模态对话框所占资源
5. if(pdlg2 !=NULL) delete pdlg2; //释放非模态对话框所占资源
6. CDialog::OnClose();
7. }
要记得在DemoDlg.cpp上面添加头文件
#include "Dlg1.h"
#include "Dlg2.h"
8、现在运行即可实现非模态对话框效果了:在点击显示对话框时,如果对话框未创建,则创建该对话框,否则将已创建的对话框显示出来。
本文由职坐标整理并发布,希望对同学们学习VC编程技术的知识有所帮助。了解更多详情请关注职坐标VC频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号