A: 主对话框
B:主对话框上编辑框
C: 主对话框上按钮控件
D:由C弹出的模态对话框
怎样把在D中获得的数据(字符串),显示在B上。
为了给主框架减负,不要使用发送消息在主框架中实现的方法
解决方案 »
- 大家来找茬,找找小错误
- 怎样在VC中生成HTM文件?
- 关于WM_COPYDATA的问题?
- 请教在视图——文档模式下,List control初始化的问题?
- 关于带参调试
- Help~ Windows Media Player 9.0 如何截图?
- 要隐藏启动一个GUI程序,请问该如何做
- SQL Server 数据库中 字段类型为 smalldatetime如何读取?
- 为什么我调用VER_SET_CONDITION编译器告诉我找不到定义啊,我已经#include "winnt.h"拉
- 如何实现CBitmapButton从文件中读取位图啊???
- 高分求解CRichEditView如何实现行号功能?
- 本人初学者,请教vc++图像处理方面的问题
2.主对话框写个函数 void SetEdit(strd::string str);
为了给主框架减负,不要使用发送消息在主框架中实现的方法
============
给主对话框发自定义消息就加重了主框架负担了?主框架的负担还不是在于消息的处理,反正是显示在B上,用全局变量还不是一样。
第一步,修改一下D类的构造函数,加一个参数,用来传递父类。
同时,给D类加一个指向父类的成员变量,用来保存传进来的父类的指针。
比如D类为:CMyDialog的话,下面的它的构造函数和成员变量。
public:
CMyDialog(CfgfgDlg* pParent); // 标准构造函数
virtual ~CMyDialog();
CfgfgDlg *m_pParent;
注:CfgfgDlg就是D类的父类。
下面是构造函数的实现:
CMyDialog::CMyDialog(CfgfgDlg* pParent /*=NULL*/)
: CDialog(CMyDialog::IDD, pParent)
{
m_pParent=pParent;
}
其实也就是将通过构造函数传进来的父类的指针,用m_pParent这个成员变量保存起来。
再下面就是应用了,因为修改了构造函数,所以用时写成这样:
CMyDialog dlg(this);//通过这一句,将this也就是父类的指针传进去了。
dlg.DoModal();
再下面,在D类,也就是我上面的CMyDiallg类中就可以用成员变量m_pParent来引用父类了。比如,父类窗口中有一个EDIT,ID为IDC_EDIT1,你想将它内容改为“1111”;那么可以写作m_pParent->SetDlgItemText(IDD_EDIT1,_T("1111"));
这种方法是子对话框是模态对话框,在弹出时操作父对话框的一般方法。
CDDialog d;
if(d.DoModal()==IDOK)
{
GetDlgItem(ID_B)->SetWindowText(d.m_str);
}
//| A |
//| |---------| |
//| |B(文本框) | |
//| |---------| |
//| |---------| |
//| | C (按钮) | |
//| |---------| |
//|------------------------------|