需求分析:
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;
}
完成啦~~
总结:简单点说就是在父对话框中声明个成员变量来存放你要传递的参数,然后在子对话框里弄个函数将你想传的值赋给那个成员变量