如何在文档视图结构界面程序中弹出对话框并通过edit control控件传递数据
2017-02-28 16:11
246 查看
最近写一个MFC的界面程序,主界面一个基于单文档的视图结构,但是需要edit control传递一个数据值给一个变量,即需要手动设置一个参数。在基于对话框的界面中,要通过edit control控件传递一个数据给程序很简单。直接在工具箱中拖一个edit
control控件到对话框界面上,再修改该控件的ID,并为其添加一个变量,注意选择所属的基类即可。
但是在基于单文档的界面中就不行了,因为在资源视图中的工具箱中根据找不到edit control这个控件,所以在基于文档结构的MFC界面中要手动输入数据值,最好的办法是:在菜单中设置一个按钮,并在该按钮的响应函数中弹出一个对话框,在对话框中用edit
control控件传递数据值。这种文档结构的软件界面当有很多参数需要手动传递的时候就可以用这种方法。
一、在基于文档结构的界面中弹出对话框的步骤:
1、打开工程的资源视图->Dialog->右击->选择“插入Dialog”。这样既可新建一个对话框。
2、为新插入的对话框添加类。同样在资源视图中,将光标移动至刚新插入的对话框上->右击->点击"添加类",在弹出“类向导”对话框中设置类名称,注意:一般类的名称用大写的字母C开头。
3、添加完成后注意看工程目录,会多出一个.h和一个.cpp文件,这里以dlg.h和dlg.cpp为例、类名为CDlg方便下文。
4、在原来的文档视图的Doc.h文件中,包含dlg.h文件,即;#include "dlg.h"即可。在Doc的类定义中,添加一个public类型的CDlg类对象(模态对话框),或者是对象指针(非模态对话框)。
5、在文档结构视图的菜单中的选择一个按钮,右击为其添加事件处理程序(注意选择所属的类,一般为Doc的那个类),在响应函数中用DoModal函数弹出对话框。例程:
6、编译工程,在文档视图界面的菜单中单击5中的那个按钮,就可以弹出1中插入的对话框。
二、利用edit control控件传递数据:
1、在插入的对话框上,在工具箱中拖一个edit control控件到界面上,右击为其添加一个变量,一般变量以m_开头,点击"确定"。
2、注意这时候在Dlg.h文件中Dlg类的定义中就会有刚添加这个变量。
3、双击新插入对话框上“确定”按钮,在确定按钮的消息处理函数中,添加UpdateData(TRUE)语句,将edit control控件的值传递给edit control控件的对应的变量。
control控件到对话框界面上,再修改该控件的ID,并为其添加一个变量,注意选择所属的基类即可。
但是在基于单文档的界面中就不行了,因为在资源视图中的工具箱中根据找不到edit control这个控件,所以在基于文档结构的MFC界面中要手动输入数据值,最好的办法是:在菜单中设置一个按钮,并在该按钮的响应函数中弹出一个对话框,在对话框中用edit
control控件传递数据值。这种文档结构的软件界面当有很多参数需要手动传递的时候就可以用这种方法。
一、在基于文档结构的界面中弹出对话框的步骤:
1、打开工程的资源视图->Dialog->右击->选择“插入Dialog”。这样既可新建一个对话框。
2、为新插入的对话框添加类。同样在资源视图中,将光标移动至刚新插入的对话框上->右击->点击"添加类",在弹出“类向导”对话框中设置类名称,注意:一般类的名称用大写的字母C开头。
3、添加完成后注意看工程目录,会多出一个.h和一个.cpp文件,这里以dlg.h和dlg.cpp为例、类名为CDlg方便下文。
4、在原来的文档视图的Doc.h文件中,包含dlg.h文件,即;#include "dlg.h"即可。在Doc的类定义中,添加一个public类型的CDlg类对象(模态对话框),或者是对象指针(非模态对话框)。
5、在文档结构视图的菜单中的选择一个按钮,右击为其添加事件处理程序(注意选择所属的类,一般为Doc的那个类),在响应函数中用DoModal函数弹出对话框。例程:
void xxDoc::OnXX() { //CDlg0为Doc类的刚新添加的Cdlg类的类成员 if(CDlg0.Domodal()) { } }以上弹出的是模态对话框。关于模态和非模态再叙述。
6、编译工程,在文档视图界面的菜单中单击5中的那个按钮,就可以弹出1中插入的对话框。
二、利用edit control控件传递数据:
1、在插入的对话框上,在工具箱中拖一个edit control控件到界面上,右击为其添加一个变量,一般变量以m_开头,点击"确定"。
2、注意这时候在Dlg.h文件中Dlg类的定义中就会有刚添加这个变量。
3、双击新插入对话框上“确定”按钮,在确定按钮的消息处理函数中,添加UpdateData(TRUE)语句,将edit control控件的值传递给edit control控件的对应的变量。
void CDlgParaSet::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); CDialogEx::OnOK(); }4、在一中步骤5中的按钮消息函数中,将edit control控件变量的值赋值给需要的变量。
void xxDoc::OnXX() { //CDlg0为Doc类的刚新添加的Cdlg类的类成员 if(CDlg0.Domodal()) { int data = CDlg0.m_data; //m_data为edit control控件添加的变量名字, data需要接受数据值的变量 } }5、通过编译,即可通过单击在文档视图的菜单中按钮,弹出对话框,输入数据,单击确定,将相应的数据传递到Doc工程中。
相关文章推荐
- 如何从一个对话框弹出单文档视图
- 利用AppFace美化VC程序(对话框或文档视图结构)
- 如何从一个对话框弹出单文档视图
- 利用AppFace美化VC程序(对话框或文档视图结构)
- 单文档多视图之间如何传递数据
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- 如何从一个对话框弹出单文档视图
- 【微信小程序+ES6新特性应用】通过对类的操作来处理数据后显示在视图界面
- 如何从一个对话框弹出单文档视图
- 在基于对话框的程序中弹出文档视图的框架
- 如何从一个对话框弹出单文档视图
- 如何在程序里使用代码关闭由MessageBox()弹出的对话框?
- DLL(MFC)通过Window消息向C#程序传递数据
- 表A中的记录随时变化,程序显示A数据的界面中如何自动也跟着刷新?
- 文档/视图结构中的各个部分是如何联系到一起的
- 文档/视图结构中的各个部分是如何联系到一起的
- 文档-视图结构下MFC程序的全屏显示
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- 深入分析:怎样从一个对话框弹出单文档视图