MFC不同窗口之间传递数据

编程入门 行业动态 更新时间:2024-10-25 14:33:46

MFC不同<a href=https://www.elefans.com/category/jswz/34/1771087.html style=窗口之间传递数据"/>

MFC不同窗口之间传递数据

一、全局变量法

1)先生成模态对话框。

主窗口

 

子窗口

2)在主窗口的按钮控件写如下代码

CString global_msg;
void Cexample1Dlg::OnBnClickedButtonMain()
{// TODO: 在此添加控件通知处理程序代码//把IDC_EDIT_MAIN的值给global_msgGetDlgItemText(IDC_EDIT_MAIN, global_msg);Dlg_new dlg;dlg.DoModal();//把global_msg的值给IDC_EDIT_MAINSetDlgItemText(IDC_EDIT_MAIN,global_msg);
}

3)在子窗口的头文件中写如下代码

extern CString global_msg;

4)在子窗口的按钮中写如下代码

void Dlg_new::OnBnClickedButtonNew()
{// TODO: 在此添加控件通知处理程序代码GetDlgItemText(IDC_EDIT_NEW, global_msg);
}

 5)重新子窗口初始化代码

BOOL Dlg_new::OnInitDialog()
{CDialogEx::OnInitDialog();// TODO:  在此添加额外的初始化SetDlgItemText(IDC_EDIT_NEW, global_msg);return TRUE;  // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}

二、成员变量法

1)在子窗口头文件,公共成员变量里:

public:CString message;

 2)在主窗口按钮程序中

void Cexample1Dlg::OnBnClickedButtonMain()
{// TODO: 在此添加控件通知处理程序代码/*成员变量法*/Dlg_new dlg;GetDlgItemText(IDC_EDIT_MAIN,dlg.message);dlg.DoModal();SetDlgItemText(IDC_EDIT_MAIN,dlg.message);
}

3) 在子窗口按钮程序中

void Dlg_new::OnBnClickedButtonNew()
{// TODO: 在此添加控件通知处理程序代码/*成员变量法*/GetDlgItemText(IDC_EDIT_NEW, message);}

4)在子窗口初始化程序中

BOOL Dlg_new::OnInitDialog()
{CDialogEx::OnInitDialog();/*成员变量法*/SetDlgItemText(IDC_EDIT_NEW, message);return TRUE;  // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}

 三、通过AfxGetMainWnd()获取主窗口的指针

1)主窗口按键程序

void Cexample1Dlg::OnBnClickedButtonMain()
{// TODO: 在此添加控件通知处理程序代码Dlg_new dlg;dlg.DoModal();
}

 2)子窗口初始化程序

BOOL Dlg_new::OnInitDialog()
{CDialogEx::OnInitDialog();/*法三通过AfxGetMainWnd()获取主窗口的指针*/CString msg;//CWnd* pWnd = AfxGetMainWnd();//CDialog 为CWnd的子类所以可以用下面的代码,代替上面的代码。//因为MFC的窗口都是基于CDialog,所以用下面的代码CDialog* pdlg = (CDialog*)AfxGetMainWnd();  //获取主窗口的指针pdlg->GetDlgItemText(IDC_EDIT_MAIN,msg);SetDlgItemText(IDC_EDIT_NEW,msg);return TRUE;  // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}

 3)子窗口按键程序

void Dlg_new::OnBnClickedButtonNew()
{// TODO: 在此添加控件通知处理程序代码/*法三通过AfxGetMainWnd()获取主窗口的指针*/CString msg;CDialog* pdlg = (CDialog*)AfxGetMainWnd();GetDlgItemText(IDC_EDIT_NEW, msg);pdlg->SetDlgItemText(IDC_EDIT_MAIN, msg);
}

 四、通过GetParent()获取父窗口的指针

 1)主窗口按键程序

void Cexample1Dlg::OnBnClickedButtonMain()
{// TODO: 在此添加控件通知处理程序代码Dlg_new dlg;dlg.DoModal();
}

 2)子窗口初始化程序

BOOL Dlg_new::OnInitDialog()
{CDialogEx::OnInitDialog();/*法四通过GetParent()获取父窗口的指针*/CString msg;//CWnd* pWnd = AfxGetMainWnd();//CDialog 为CWnd的子类所以可以用下面的代码,代替上面的代码。//因为MFC的窗口都是基于CDialog,所以用下面的代码CDialog* pdlg = (CDialog*)GetParent();  //获取主窗口的指针pdlg->GetDlgItemText(IDC_EDIT_MAIN,msg);SetDlgItemText(IDC_EDIT_NEW,msg);return TRUE;  // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}

 3)子窗口按键程序

void Dlg_new::OnBnClickedButtonNew()
{// TODO: 在此添加控件通知处理程序代码/*法四通过GetParent()获取父窗口的指针*/CString msg;CDialog* pdlg = (CDialog*)GetParent();GetDlgItemText(IDC_EDIT_NEW, msg);pdlg->SetDlgItemText(IDC_EDIT_MAIN, msg);
}

更多推荐

MFC不同窗口之间传递数据

本文发布于:2023-06-18 12:59:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/771259.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:窗口   数据   MFC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!