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方法创建对话框。

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

VC资源编辑器里对话框的大小和实际的像素尺寸显示问题 .

在使用Visual Studio 6.0(Visual C++ 6.0)VS2005及VS2008也存在同样的问题,开发的过程中,对话框中的控件在资源编辑器中的尺寸和其实际的像素尺寸之间的对应问题非常...
  • dafenqie
  • dafenqie
  • 2017年01月14日 21:15
  • 728

MFC 复制另一个工程中的对话框资源

vc6.0 MFC 复制另一个工程中的对话框资源
  • u010901792
  • u010901792
  • 2016年08月01日 21:58
  • 1615

一般属性页对话框创建和显示

点击“计算机/属性/高级系统设置”就可以出现如图1的对话框,这个对话框就是一个属性表单,它的每一个选项卡就是一个属性页。一个属性表单由一个或多个属性页组成。它有效解决了大量信息无法在一个对话框上显示,...
  • xiao3404
  • xiao3404
  • 2016年11月06日 17:55
  • 554

MFC中对话框资源的复制

在工程中导入已建好的对话框,方法有三:   法一:   1、首先要生成一个*.ogx的文件。    方法:打开包含有所要加的对话框资源的工程(别的工程)。     ...
  • xin_yu_xin
  • xin_yu_xin
  • 2014年09月03日 15:02
  • 6116

不使用对话框资源模版创建对话框

在MFC程序中使用对话框时首先在资源模版里创建对话框资源,然后DoModal()或者CReate显示出模式对话框或者非模式对话框,这样创建出的对话框移植性差,从一个工程移动到另一个工程比较麻烦。  ...
  • ykm0722
  • ykm0722
  • 2012年08月28日 09:04
  • 1925

MFC不同工程(解决方案)之间对话框资源的复制与重用方法

项目是一个基于MFC的VS2013工程A,主要实现一个通过GPRS网络接收一个传感器系统采集的数据并存储的功能。最近需要添加一个带有温度计、罗盘等控件的对话框,但由于原程序已经比较完善,而新控件以前并...
  • lihui126
  • lihui126
  • 2015年05月07日 09:53
  • 2143

<MFC>创建对话框和新建对话框类

参考资料:《鸡啄米的IT博客》VS2010/MFC编程入门教程之目录和总结 http://www.jizhuomi.com/software/257.html 创建对话框主要分两大步,...
  • xieziwei2008
  • xieziwei2008
  • 2013年10月16日 16:07
  • 2362

vc++ 如何导入其他工程中的对话框资源

方法1:复制->粘贴找到你要复制的资源   crtl+c 或者右键复制 切换到你要用这个资源的工程的资源视图,选中你的工程(一个解决方案可能有多个工程),然后直接粘贴或者右键注意:我是在vs2012中...
  • panzhijiepanzhiyang
  • panzhijiepanzhiyang
  • 2014年11月05日 15:22
  • 988

MFC导出对话框类(带资源)

如果mfc想导出一个功能完整的对话框(类似于系统自带的打开文件),有时候会创建失败,或者在DoDataExchange函数内断言中断,提示找不到某控件资源。这是因为dll加载后,mfc把resourc...
  • mengxingxia
  • mengxingxia
  • 2017年07月12日 10:50
  • 367

MFC 修改对话框rc文件 资源符号 ID

修改工程目录下resource.h //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by ...
  • u010615629
  • u010615629
  • 2015年11月26日 12:44
  • 1626
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 设计对话框资源
举报原因:
原因补充:

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