MFC 基础知识:主对话框与子对话框(一)

(仅供使用VS MFC初学者学习,高手莫见笑)
在MFC中通常会使用点击一个按钮,弹出一个子对话框的基础知识,这些都是学习MFC的基础知识,也是非常重要的知识,这里我就简单的讲讲这些知识。

一. 设置主对话框

1.文件-新建项目(我设置的过程名为:EditSet)-MFC应用程序-该页面使用“基于对话框”-完成即可.
2.在“资源视图”中打开Dialog对话框,删除“TODO:在此处放置对话框控件”和“确定”、“退出”按钮。
3.在工具箱中添加一个按钮Button控件和一个编辑框Edit Control控件。可右键控件设置其属性。其ID我使用的就是默认的:IDC_BUTTON1、IDC_EDIT1.其中设置按钮的Caption为“子对话框”,即是设置其名称。
4.运行其显示的结果如下图所示:

二. 设置子对话框

1.在“资源视图”中添加一个新的对话框。右键Dialog,选择“添加资源”;
2.在弹出的对话框中双击Dialog,即实现新建一个对话框。默认名字为IDD_DIALOG1;

3.在子对话框中添加一个编辑框Edit Control控件,它的默认名为IDC_EDIT1,但它对应的是子对话框的ID名。点击状态栏的“测试对话框”按钮,测试当前对话框运行后的样式。

三. 主对话框调用子对话框(重点)

1.双击主对话框中的“子对话框”按钮,即可生成它相应的按钮函数。在XXXDlg.cpp文件(XXX为创建工程的过程名)中生成一个函数。

voidCEditSetDlg::OnBnClickedButton1()
{
    // TODO:在此添加控件通知处理程序代码
}

它表示点击该按钮就会执行相应函数中的响应操作。

2.双击IDD_DIALOG1子对话框的空白处,为该对话框创建一个对话框类。(也可打开类导向添加对话框类)

3.在弹出的“MFC添加类向导”中输入要添加类名(我常用C+XXX+Dlg命名对话框类),同时默认的基类为CDialogEx(扩展对话框类),并自动生成SubDlg.h\.cpp文件。

注意:VC6中默认Dialog的基类是CDialog,VS2012中Dialog基类默认选择是CDialogEx(Extend 扩展)。其中CDialogEx继承自CDialog,添加了一些功能:换背景图片、背景颜色。(后面还将设置子对话框的背景颜色)

4.在要调用该对话框的主对话框XXXDlg.cpp中引用子对话框类,即添加:

//引用子对话框类
#include"SubDlg.h"

5.在XXXDlg.cpp中生成的按钮函数OnBnClickedButton1()中添加调用子对话框的代码。

voidCEditSetDlg::OnBnClickedButton1()
{
    //实例自定义的子对话框类dlg
    CSubDlgdlg;
    //设置子对话框背景颜色黄色
CDiologEx中
    dlg.SetBackgroundColor(RGB(255,255,0));
    //DoModal点击按钮显示相应对话框
    if(dlg.DoModal()==IDOK)
    { }
}

6.运行如下图:当点击主对话框的“子对话框”按钮时,显示一个黄色背景的子对话框。

这样主对话框调用子对话框的基本步骤就实现了,上图中黄色的及为子对话框,当点击按钮后会弹出该对话框.希望大家能了解MFC的这一基础知识,同时下面这个博客中介绍了主对话框调用子对话框的几个步骤,方便大家学习:
http://blog.21ic.com/user1/7447/archives/2011/83411.html
这里要感谢很多博客,它们让我学到了很多知识,最后高手莫见笑,希望能帮助到大家吧!若有错误见谅.
(2013-6-8 夜2点 By:Eastmount)

 

时间: 2024-10-03 13:25:49

MFC 基础知识:主对话框与子对话框(一)的相关文章

MFC 基础知识:主对话框与子对话框(二)

(仅供使用VS MFC初学者学习,高手莫见笑)接"MFC 基础知识:主对话框与子对话框(一)"的内容在"MFC 基础知识:主对话框与子对话框(一)"中Edit Control(编辑框)控件中输出内容,主要是想讲讲在创建的子对话框中如何实现一些操作:即添加OnInitDialog初始化函数的操作,这里的操作VS2012与VC++6.0略有些改动. 一. 主对话框编辑框中输出内容 1.找到主对话框XXXDlg.cpp中的OnInitDialog()初始化函数,在函数注释

MFC 基础知识:对话框背景添加图片和按钮Button添加图片

        很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回顾了下相关知识.的确,任何知识一段时间过后都比较容易忘记,但回顾起来还是很有印象的.        这篇文章主要是回顾以前的MFC基础知识,给对话框添加背景图片和给按钮button添加背景图片:希望此篇基础性文章对大家有所帮助!同时为下次做MFC相关知识提供点此时所想所感吧.内容比较简单,高手飘过~ 一. 对话框背景添加图片         首先

C# 基础知识 (三).主子对话框数值传递

在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗口的dataGridView动态变化显示着新添加\修改的值;或者在修改信息时,输入用户编号"000001"在对应textBox中它的相应数据.显示如下图所示: 以上应用都涉及到如何在两个不同窗口间传递数值,并实现动态的更新,下面就介绍我请教同学学到的一种主子对话框数值传递的知识,仅供大家学

在MFC单文档程序中,如何在子对话框类中访问视类中的一个变量?

问题描述 在MFC单文档程序中,如何在子对话框类中访问视类中的一个变量? 如题,小弟最近遇到一个问题,新建一个单文档程序,并在其中引入对话框资源.我想在视类的OnDraw()函数中通过响应视类的一个变量的变化来改变视类窗口中图形的状态,而该视类变量的变化是由对话框中的一个控件控制的,这个控件是由旋钮控件和编辑控件捆绑而成的.在网上看了一些资料,试了其中的一些方法,都没能成功.论坛中高手众多,想请热心的高手们给个解决方法,在此先谢过了!能给个相似的例子的更好! 解决方案 要么你把那个变量定义成静态

c++-MFC对话框程序通过按钮弹出子对话框,如何初始化子窗口

问题描述 MFC对话框程序通过按钮弹出子对话框,如何初始化子窗口 要实现的功能就是点击按钮,用dlg.DoModal()弹出子对话框,在子对话框中有CListControl控件,要对CListControl控件进行数据的初始化,但是无法对其进行初始化.子对话类中已经添加了OnInitDialog()方法,感觉没有执行这个方法,求解. 点击按钮事件代码: void CMFCPaikeDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CDialogEx::

用JavaScript实现对话框的教程_基础知识

 JavaScript支持三种重要类型的对话框.这些对话框可以用来引发和警报,或得到确认的任何输入或有来自用户的一种输入. 在这里,我们将一个一个地来看每个对话框:Alert 对话框: 一个警告对话框,主要是用来给一个警告信息给用户.就像如果一个输入字段要求输入一些文字,但用户不输入字段则作为验证,可以使用警告框,如下给出警告信息的一部分: <head> <script type="text/javascript"> <!-- alert("Wa

JavaScript 对话框和状态栏使用说明_基础知识

今天为大家简单介绍一下 JavaScript 对话框和状态栏. javascript 与 对话框: 三种对话框图示: 在客户端浏览器中,三种常见的Window方法用来弹出简单对话框,它们分别是 alert(),confirm()和prompt().alert()用于向用户显示消息.confirm()要求用户点击确认或取消.prompt()要求用户输入一个字符串.下面的三幅图分别为alert(),confirm()和prompt(). alert()对话框提示 confirm()对话框提示 pro

mfc初学者,想做一个基于对话框的类似搜索引擎的程序,有没有功能相近源代码借鉴一下

问题描述 mfc初学者,想做一个基于对话框的类似搜索引擎的程序,有没有功能相近源代码借鉴一下 关于注册时的用户名密码怎么存啊,数据库怎么用啊,搜索的文件放哪啊等等问题,不胜感激 解决方案 最简单的是嵌入一个webbrowser控件,链接到网站上. 解决方案二: 建议楼主先参考书籍去MFC 体验一下控件的使用和相关响应函数的编写吧,先动手操作再想思路 解决方案三: 先学好基础再想做实际程序,数据库怎么用这些不是一两句话能说清楚的

MFC中CWnd类及其派生类对话框、消息处理、窗口操作

http://hi.baidu.com/xiaorida21/blog/item/8d8eb77a22eedee52e73b39e.html CWnd类 我们在屏幕上看到的所有对象都和窗口有关,它们或者派生于CWnd,属继承关系,如对话框.工具栏.状态栏.子控件:或者被CWnd合成,属服务员与服务对象关系,如图标.菜单.显示设备. CWnd类封装的窗口操作主要包含窗口的创建和销毁.操作窗口风格.操作窗口状态.窗口子类化.获取指定窗口等. 当然,CWnd还实现了其他功能: 1.绘制窗口 GetDC