在单文档中显示我的第一个对话框

在单文档中显示我的第一个对话框

(2010-04-19 21:19:50)

转载▼

标签:

it

 

今天编写了在单文档中创建对话框以及调用对话框的代码,收获很多;

1:OnInitDialog函数的加载问题尤其是在VS上的加载;(这一点花了很长时间才查到资料)

OnInitDialog()函数是个virtual(虚函数),在它的类中用添加虚

函数的方法,会发现添加的虚函数里面没有这个函数,而这个

OnInitDialog函数是很有用的,在一般的添加进去的对话框的类中

是不会有这个函数的,必须手工增加进去,当然不用手工写代码,手

动添加时可能会出错.可以通过VC加进去,而要加的这个函数的名

字不是OnInitDialog,所以很难找到.其原因是因为要加的函数是

WM_INITDIALOG.

这个函数的添加方法是这样的,选择要加入函数的对话框,右键-

>ClassWiZard(类向导)->Message Maps(消息映射),对象里面选择

对话框,Messages(消息)里面选择WM_INITDIALOG,然后点Add

Function(增加函数),这样就映射到类中去了,它的函数名称是

OnInitDialog,而不是WM_INITDIALOG.这时可以点Edit Fuction,

编辑函数了.

Visual studio   没有旧风格class wizard了。所以无

像VC6.0那样添加oninitdialog函数。其方法是:首先添加

CDialog对话框的类,方法是可以在对话框点右键,在右键菜

单里点Add Class,然后打开刚才添加的类的头文件,在头文

件的类的声明区里按F4调出属性窗口,在属性窗口的工具栏里

找到Overrides点击它会切换到重写方法列表界面,在这个列

表里找到OnInitDialog,点后面的下拉组合框就有添加

OnInitDialog了,点一下就可以把这个方法重写到你的程序里

了。

还有两个要注意的问题是:

一个是:子对话框添加类后,打开此类的头文件,注意了:一定

要确认鼠标光标处于类声明的区域,这个时候再打开属性窗口,

点击工具栏上的Overrides(重写),里面可以找到

OnInitDialog.

如果鼠标没处在类声明的区域,属性窗口就显示的是当前头文件

的属性,工具栏是不会有Overrides(重写)这一项的。

另一个是:

ADD Class后 要在左边文件列表上面选择 show all files (显示所有文件)后 再打

开添加的类的头文件 ....这样才行的 .......

就是你为子对话框添加完类后,在vs的左边文件列表上选择show all files。
然后点击进去你添加的类的头文件。这时在(一般)右边的属性窗口里
会有一个图标(Overrides)点击它

2:由“在程序中调用对话框”所学习到的;

不同的域对应不同的头文件以及执行文件,eg:菜单中测试对话框对应的头文件就是MainFrm.h对应的执行文件是MainFrm.cpp而对于对话框中的控件对应的就是FirstDlg.h以及FirstDlg.cpp.

3:连接包含问题

当主菜单要与对话框进行连接时,在OnTestDlg函数的实现文件MainFrm.cpp的前面添加CFirstDlg类的包含语句:#include "FirstDlg.h"进行连接;

代码:

##include "FirstDlg.h"

void CMainFrame::OnTestDlg()
{
 // TODO: 在此添加命令处理程序代码
 CFirstDlg dlg;  //定义对话框类对象;
 dlg.DoModal();//显示对话框;
}

BOOL CFirstDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

// TODO:  在此添加额外的初始化
    CStatic *pWnd=(CStatic*)GetDlgItem(IDC_STATIC1);
 pWnd->SetWindowTextW(_T("这是我的第一个对话框"));
 return TRUE;  // return TRUE unless you set the focus to a control
 // 异常: OCX 属性页应返回 FALSE
}

时间: 2024-12-12 19:38:19

在单文档中显示我的第一个对话框的相关文章

MFC单文档中使用D3D9

今天试着把D3D9加入单文档中,看了一个pdf感觉写的挺好的,链接: http://pan.baidu.com/s/1c0q4za4 密码: yj9v 文章最后这里在app类里使用OnIdle,试了一下,发现会在某一个_derive处崩溃,索性不用这个消息响应函数OnIdle了,在OnDraw处调用render,OK

MFC 单文档中动态添加菜单项和响应菜单事件

新建一个单文档程序 在查看菜单项中增加两个子菜单,分别为隐藏工具栏(ID_HIDE),新建菜单(ID_NEWMENU) 在Resource.h中增加一个ID_NEWMENU宏 #define ID_NEWMENU        WM_USER+101 操作工具栏和状态栏 使用GetDescendantWindow函数获取工具栏和状态栏的指针 为ID_HIDE添加消息映射,编辑代码如下 static bool m_Hide=false; m_Hide=!m_Hide; //获取工具栏指针 CWnd

【VC编程技巧】窗体?3.5对单文档或者多文档程序制作启动画面

(一)概要: 文章描述了怎样通过Visual C++ 2012或者Visual C++ .NET,为单文档或者多文档程序制作启动画面.在Microsoft Visual Studio 6.0中对于单文档程序(SDI)我们可以很方便利用微软提供的组件Visual C++ Component (Splash Screen).因为在Microsoft Visual Studio 6.0以后的版本或者Visual C++ .NET没有提供这个组件,我们可以通过自定义对话框来实现Splash Screen

MFC单文档下使用非模态对话框

由于自己写的程序是自动获取桌面实时图像,所以用模态对话框导致程序出错,目前粗鄙的理解是模态对话框会让对话框所在线程暂停,当关闭对话框后才能继续操作,而非模态对话框可以不必让程序暂停. 下面记录非模态对话框的创建过程: 1 在单文档中新建一个对话框资源并生成对话框类 CRadiusDlg 2 在视图类C**view.cpp中添加对话框的头文件,并添加一个对话框类的指针变量CRadiusDlg *pModalessDlg; 3 在菜单栏添加一个用于显示对话框的菜单项,并在响应事件处,添加事件处理代码

windows程序设计——飞机大战笔记(单文档文件登陆界面)

//////////////2015/07/21//////////////// /////////////by xbw/////////////////////// /////////////环境 VS 2013//////////// 飞机大战做的差不多了,闲来无事加点高大上的东西,关于单文档的登陆界面::: 界面有点丑,但是足够账号登陆了,,先试一把: 还不错吧,该有的都有了:: 下面说一下过程 ...... 首先,我们要在资源视图中创建一个Dialog对话框::: 先大体画一下这个对话框

用VC++MFC做文本编辑器(单文档模式)

用VC++MFC做文本编辑器(单文档模式) 原来做过一个用对话框实现的文本编辑器,其实用MFC模板里面的单文档模板也可以做,甚至更加方便,适合入门级的爱好者试试,现介绍方法如下: < xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 1,首先新建一个工程,选择MFC AppWizard(exe),定名字为:textview_1,程序类型选择单个文档,其他均默

从多个XML文档中读取数据用于显示webapi帮助文档

前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/Documentation.xml")) 替换成 new XmlDocumentationProvider("PluginsFolder/*.xm

[daily][troubleshoot][archlinux][wps][font] wps文档中的图内容无法显示中文

序 用linux作为工作生产环境的几个需要解决的问题之一是:文档协作,即如何兼容Micro$oft Office格式的文档. 我一般的工作方式是:在linux下创建一个win7的虚拟机,安装常用的windows软件,office,QQ,teamview等. 写文档的时候,我会进入win虚拟机,使用office软件进行编写,保证其他大多数使用windows的同事可以正常打开我的文档. 读文档的时候,我在linux里使用wps.先后用过openoffice, libreoffice,wps.wps与

VC项目开发之单文档多视图实现-非分割窗口[转]

k_eckel:http://www.mscenter.edu.cn/blog/k_eckel 多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式 1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多. 2)通过一个文档关联多个视图,窗口显示整个视图. 第二种实现较第一种复杂,这里给出详细的实现方法. Step 1:使用VC 6.0新建一个Project,命名为:Mu