VC/MFC 对话框工程中 主窗体与子窗体之间如何传值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC/MFC 对话框工程中 主窗体与子窗体之间如何传值?相关的知识,希望对你有一定的参考价值。

可以在父窗口中增加两个CEdit控件,分别是定义为m_edit1和m_edit2,把前者输入的值传到弹出子类窗口的m_edit中显示,然后在子类的编辑框中重新输入其它值(不输也行),在关闭子类窗口时,把该值回传给父类窗口的m_edit2显示:
父类窗口代码,这是一个按钮的消息响应:
void
CParentDlg::OnButton()

CString
str;
m_edit1.
GetWindowText
(str);//获取当前对话框中的
文本框
内容
CChildDlg
dlg;
dlg.m_content
=
atoi(str);//为另一个对话框类的公有成员变量赋值
dlg.DoModal();//打开另一个对话框类

子类窗口代码:
#include
"ParentDlg.h"//把父类的
头文件
包含进来
.......
void
CChildDlg::
OnInitDialog
()

m_edit.
SetWindowText
(this->m_content);//子窗口初始化时显示父类传来的值

void
CChildDlg::OnOK()//在子类窗口关闭时回传当前编辑框中的值给父窗口

CParentDlg
*
parent
=
(CParent*)
GetParent
();
CString
str;
this->m_edit.GetWindowText(str);//获取当前子窗口编辑框中的值
parent->m_edit2.SetWindowText(str);//把当前编辑框中的值回传给父窗口
CDialog::OnOK();
参考技术A 父窗口启动子窗口时,肯定有子窗口的句柄,用这个字柄给子窗口postmessage自定义消息(把窗口大小作为参考传过去),在子对话框里写个函数响应这个自定义消息就行了。当然啦,发送自定义消息最好是放在响应on_size消息的函数里(注意里面要做一个处理:windows第一次调用on—size时不能响应)。
如果还是没有把握的话,q我45324223,我以前给一个朋友写过一个demo程序,可以发给你参考。

MFC获得主窗体和父窗体指针

  MFC编程中经常遇到子窗体向父窗体传递參数的情况,这就须要获得父窗体的指针。

        例:主对话框CMyMainDlg通过buttonButtonA进入对话框CMyParentDlg。CMyParentDlg在通过buttonButtonB进入对话框CMyChildDlg。如今须要在CMyChildDlg分别訪问CMyParentDlg和CMyMainDlg的内容。须要在CMyChildDlg中增加下面两条语句:

        CMyMainDlg    *pMMD = (CMyMainDlg*)AfxGetMainWnd();     //获取主窗体指针
        CMyParentDlg *pMPD = (CMyParentDlg*)this->GetParent();   //获取父窗体指针

        当中,this代表当前窗体指针,指向CMyChildDlg。pMMD和pMPD便是指向主窗体和父窗体的指针。

以上是关于VC/MFC 对话框工程中 主窗体与子窗体之间如何传值?的主要内容,如果未能解决你的问题,请参考以下文章

VC 怎么动态改变控件大小

VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用???

在 MFC 应用程序中托管 Windows 窗体 (C#) (VC++,VS6.0)

MFC获得主窗体和父窗体指针

关闭c++MFC的主窗体,先弹出对话框询问“是不是要关闭”,点击确定取消按钮进行确认。

VC++从一个窗体中调用显示另一窗体