MFC 设计对话框资源

原创 2015年07月08日 16:19:45

1*- 利用资源视图向导创建对话框资源

首先在资源视图中创建一个对话框资源
在属性框中设置好ID例如IDD_BOOKDLG。

右键新建的对话框,点击添加类
这里写图片描述

在类中设置好Name 例如CBook 完成,这样对话框类CBook与对话框资源IDD_BOOKDLG就建立了关联。

2*-创建并显示对话框

(方法一)创建模式对话框
双击主窗口的按钮,转到代码页后,先 在头部引用头文件
#include "Book.h"
接着在按钮响应事件中输入以下代码

void CMFC测试Dlg::OnBnClickedOk()
{
        CBook Book;     //定义CBook对象
        Book.DoModal(); //调用DoModal方法显示模态对话框
}

在新建的对话框关闭前无法激活朱对话框,因为新创建的对话框是模式对话框。即利用new运算符来构建对象,使用delete运算符来释放对象。

CBook *pBook=new CBook();
pBook->DoModal();
delete pBook;

(方法二)创建非模式对话框

进入主对话框类定义的头文件部分,引用对话框类CBook的头文件

#include "Book.h"

这里写图片描述

在对话框类中定义一个CBook类型的成员变量

private:
        CBook m_Book;      //添加CBook类型的成员变量

这里写图片描述

回到资源视图中,点击主窗口中的按钮,编写按钮的单击事件代码,

void CMFC测试Dlg::OnBnClickedOk()
{
        m_Book.Create(IDD_BOOKDLG,NULL);   //创建对话框
        m_Book.ShowWindow(SW_SHOW);        //显示对话框
}

此时就可以进行对话框切换,将主对话框激活,但是当吧非模式对话框关闭后,在单击按钮时将会出现错误。

这是因为关闭非模式对话框时,只是隐藏了对话框,二没有销毁由create方法创建的对话框资源,此时在调用create方法创建对话框时,由于当前的m_Book对象已经有了关联的对话框,因此导致了上述错误,解决方法如下

void CMFC测试Dlg::OnBnClickedOk()
{
    if (!IsWindow(m_Book.m_hWnd))           //是否关联对话框了
    {
        m_Book.Create(IDD_BOOKDLG, NULL);   //创建对话框
    }       

    m_Book.ShowWindow(SW_SHOW);             //显示对话框
}

使用IsWindow函数来判断m_Book对象是否关联了对话框,如果没有,在调用create方法创建对话框。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

dll封装MFC对话框资源

  • 2015年12月11日 16:41
  • 16.59MB
  • 下载

VC/MFC如何使用CreateEx()创建自己的对话框资源

摘自:http://blog.sina.com.cn/s/blog_46e7a06c0100dw9x.html 创建非模态对话框是调用的是Create(),第一个参数是对话框模板指针,第二个是父...
  • swping
  • swping
  • 2013年05月22日 22:01
  • 1183

MFC对话框中的工具栏、状态栏设计小结

对网上的资料结合自己的实践的总结,由于大部分都是网上先辈们的经验,这里只是直接将内容拿来,格式优化一下更易读而已。对话框中建立工具栏的方法工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标来表...

自行设计MFC向导对话框

MFC没有提供现成的向导对话框,而是提供了CPropertySheet和CPropertyPage两个类,分别表示向导容器、向导页。为了制作出向导风格的对话框,需要从CPropertySheet继承一...
  • jslmes
  • jslmes
  • 2016年07月15日 08:42
  • 910

MFC设计局域网对战五子棋游戏(三)构造游戏主对话框

游戏对话框的构造函数:   CWZQDlg::CWZQDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CWZQDlg::IDD, pParent), m_game...

MFC对话框程序设计笔记

一、多线程设计 1、线程创建 HANDLE m_hThreadControl; m_hThreadControl = ::CreateThread(NULL, 0, ThreadControl, (L...

[MFC学习笔记]--对话框的设计

1.我们可以先建立一个单文档工程,然后“Inset->Resource->Dlg”就可以插入一个对话框。然后设计一个对话框的类,接下来,我们来看看我们设计的对话框的类的一些成员函数。 2.析构函数。...

vc--基于mfc对话框的手柄遥控机器人界面设计(二)

曾经觉得手柄来遥控玩具小车不明觉厉,现在我也能呵呵了。不过用无线来遥控机器人的话,一般要用ZigBee或者无线串口来实现通信了,无线串口还试了一下,和有线的是差不多的,实验室用的是ZigBee,这一块...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 设计对话框资源
举报原因:
原因补充:

(最多只允许输入30个字)