MFC子窗体向主窗体传递参数

本文详细介绍了如何在Visual Studio 2010中使用MFC创建一个用于修改IP地址和端口号的对话框,并将更改后的值回传至主窗口。步骤包括创建对话框、添加类、初始化控件、设置点击事件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求分析:

1、通过主窗体里“修改IP”按键调用一个Dialog,

2、在Dialog里修改IP、端口号,

3、按Dialog里的“保存”按键将参数保存到主窗体里的成员变量。

软件:VS2010

步骤:

1、创建一个新的窗口

在资源视图右键【Dialog】->添加资源,选【Dialog】->新建,定义Dialog的ID,值自定义即可,本例为IDD_SetIPPort,【Dialg】创建完成

2、为创建的子窗口添加类

在创建的Dialog窗体上右击添加类,类名自行定义即可,本例类名为CIPPInterface,之后就会生成两个文件IPPInterface.h和.cpp

3、为子窗体添加控件(IP Address Control),并在IPPInterface.h文件里添加数组

右键控件->添加成员变量,变量类别为Control,变量名自定义即可,本例为m_ctlIPAddrDesIP

在IPPInterface.h文件里添加成员变量数组:BYTE m_IP[4];

4、在主窗口双击“修改IP”按钮,生成点击事件处理函数

此函数和新建的对话框不在一个类里,需要包含新建类的.h文件:#include "IPPInterface.h"

void CTestDlg::OnBnClickedButtonSetip()
{
    // TODO: 在此添加控件通知处理程序代码
    IPPInterface dlg;
    INT_PTR nRet = dlg.DoModal();
    TRACE("nRet = %d\n",nRet);
}

5、在主窗体的.h文件里创建一个数组(为存储子窗体传过来的数值)

int m_aIPAddress[4]; 

6、为子窗体控件添加初始值,重写函数OnInitDialog()

右键子窗体->类向导->虚函数->选择OnInitDialog ->添加函数

添加代码

BOOL IPPInterface::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    m_ctlIPAddrDesIP.SetAddress(192,168,0,178);
    return TRUE;  // return TRUE unless you set the focus to a control
}

7、为子窗体的“确定”按钮添加点击事件

void IPPInterface::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    CDialogEx::OnOK();
    int nRet = 11;
    CTestDlg *parent=(CTestDlg *)GetParent();
    m_ctlIPAddrDesIP.GetAddress(m_IP[0],m_IP[1],m_IP[2],m_IP[3]);
    parent->m_aIPAddress[0] = m_IP[0];
    parent->m_aIPAddress[1] = m_IP[1];
    parent->m_aIPAddress[2] = m_IP[2];
    parent->m_aIPAddress[3] = m_IP[3];

   EndDialog(nRet);//关闭子窗体

   return;

}

完成啦~~

总结:简单点说就是在父对话框中声明个成员变量来存放你要传递的参数,然后在子对话框里弄个函数将你想传的值赋给那个成员变量

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值