VC编程:VC/MFC非模态对话框实例
安安 2017-12-20 来源 :网络 阅读 1204 评论 0

摘要:本篇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频道!


本文由 @安安 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程