龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课 9 [已完结] C++零基础开发DXF内存脚本辅助教程 32课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 6275|回复: 0

MFC不同窗口之间传递数据

[复制链接]

11

主题

16

回帖

30

积分

编程入门

Rank: 1

龙马币
32
小子不忘记 | 显示全部楼层 |阅读模式

一、全局变量法
1)先生成模态对话框。
主窗口
子窗口

2)在主窗口的按钮控件写如下代码
  1. CString global_msg;
  2. void Cexample1Dlg::OnBnClickedButtonMain()
  3. {
  4.         // TODO: 在此添加控件通知处理程序代码
  5.         //把IDC_EDIT_MAIN的值给global_msg
  6.         GetDlgItemText(IDC_EDIT_MAIN, global_msg);

  7.         Dlg_new dlg;
  8.         dlg.DoModal();
  9.         //把global_msg的值给IDC_EDIT_MAIN
  10.         SetDlgItemText(IDC_EDIT_MAIN,global_msg);
  11. }
复制代码

3)在子窗口的头文件中写如下代码
  1. extern CString global_msg;
复制代码

4)在子窗口的按钮中写如下代码
  1. void Dlg_new::OnBnClickedButtonNew()
  2. {
  3.         GetDlgItemText(IDC_EDIT_NEW, global_msg);
  4. }
复制代码

5)重新子窗口初始化代码
  1. BOOL Dlg_new::OnInitDialog()
  2. {
  3.         CDialogEx::OnInitDialog();

  4.         // TODO:  在此添加额外的初始化
  5.         SetDlgItemText(IDC_EDIT_NEW, global_msg);

  6.         return TRUE;  // return TRUE unless you set the focus to a control
  7.                                   // 异常: OCX 属性页应返回 FALSE
  8. }
复制代码



二、成员变量法
1)在子窗口头文件,公共成员变量里:
  1. public:
  2.     CString message;
复制代码


2)在主窗口按钮程序中
  1. void Cexample1Dlg::OnBnClickedButtonMain()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码

  4.         /*成员变量法*/
  5.         Dlg_new dlg;
  6.         GetDlgItemText(IDC_EDIT_MAIN,dlg.message);
  7.         dlg.DoModal();
  8.         SetDlgItemText(IDC_EDIT_MAIN,dlg.message);
  9. }
复制代码


3) 在子窗口按钮程序中
  1. void Dlg_new::OnBnClickedButtonNew()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码

  4.         /*成员变量法*/
  5.         GetDlgItemText(IDC_EDIT_NEW, message);

  6. }
复制代码


4)在子窗口初始化程序中
  1. BOOL Dlg_new::OnInitDialog()
  2. {
  3.         CDialogEx::OnInitDialog();

  4.         /*成员变量法*/
  5.         SetDlgItemText(IDC_EDIT_NEW, message);

  6.         return TRUE;  // return TRUE unless you set the focus to a control
  7.                                   // 异常: OCX 属性页应返回 FALSE
  8. }
复制代码



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

1)主窗口按键程序
  1. void Cexample1Dlg::OnBnClickedButtonMain()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码

  4.         Dlg_new dlg;
  5.         dlg.DoModal();
  6. }
复制代码


2)子窗口初始化程序
  1. BOOL Dlg_new::OnInitDialog()
  2. {
  3.         CDialogEx::OnInitDialog();

  4.         /*法三通过AfxGetMainWnd()获取主窗口的指针*/
  5.         CString msg;

  6.         //CWnd* pWnd = AfxGetMainWnd();

  7.         //CDialog 为CWnd的子类所以可以用下面的代码,代替上面的代码。
  8.         //因为MFC的窗口都是基于CDialog,所以用下面的代码
  9.         CDialog* pdlg = (CDialog*)AfxGetMainWnd();  //获取主窗口的指针
  10.         pdlg->GetDlgItemText(IDC_EDIT_MAIN,msg);
  11.         SetDlgItemText(IDC_EDIT_NEW,msg);

  12.         return TRUE;  // return TRUE unless you set the focus to a control
  13.                                   // 异常: OCX 属性页应返回 FALSE
  14. }
复制代码


3)子窗口按键程序
  1. void Dlg_new::OnBnClickedButtonNew()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码

  4.         /*法三通过AfxGetMainWnd()获取主窗口的指针*/
  5.         CString msg;
  6.         CDialog* pdlg = (CDialog*)AfxGetMainWnd();

  7.         GetDlgItemText(IDC_EDIT_NEW, msg);
  8.         pdlg->SetDlgItemText(IDC_EDIT_MAIN, msg);
  9. }
复制代码



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

1)主窗口按键程序
  1. void Cexample1Dlg::OnBnClickedButtonMain()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码

  4.         Dlg_new dlg;
  5.         dlg.DoModal();
  6. }
复制代码


2)子窗口初始化程序
  1. BOOL Dlg_new::OnInitDialog()
  2. {
  3.         CDialogEx::OnInitDialog();

  4.         /*法四通过GetParent()获取父窗口的指针*/
  5.         CString msg;

  6.         //CWnd* pWnd = AfxGetMainWnd();

  7.         //CDialog 为CWnd的子类所以可以用下面的代码,代替上面的代码。
  8.         //因为MFC的窗口都是基于CDialog,所以用下面的代码
  9.         CDialog* pdlg = (CDialog*)GetParent();  //获取主窗口的指针
  10.         pdlg->GetDlgItemText(IDC_EDIT_MAIN,msg);
  11.         SetDlgItemText(IDC_EDIT_NEW,msg);

  12.         return TRUE;  // return TRUE unless you set the focus to a control
  13.                                   // 异常: OCX 属性页应返回 FALSE
  14. }
复制代码


3)子窗口按键程序
  1. void Dlg_new::OnBnClickedButtonNew()
  2. {
  3.         // TODO: 在此添加控件通知处理程序代码

  4.         /*法四通过GetParent()获取父窗口的指针*/
  5.         CString msg;
  6.         CDialog* pdlg = (CDialog*)GetParent();

  7.         GetDlgItemText(IDC_EDIT_NEW, msg);
  8.         pdlg->SetDlgItemText(IDC_EDIT_MAIN, msg);
  9. }
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表