两个子对话框如何互相访问数据
我用VC6.0做的一个主对话框,两个子对话框(child) ,在SubDLG1中发送消息给SubDLG2,想在SubDLG2中实时取
的SubDLG1中的EDIT 中变化的数据。现在问题是如何访问SubDLG1中的数据。我用 m_DLG.m_strEDIT 方式不能
取得变化数据,只能取的在 S
ubDLG1 中构造函数中的初始化的数据.我用m_pDLG->m_strEDIT 也不行.
我在一帖子上看到 "可以通过构造函数,回去好好看一下c++吧" 这样说的话,但不知如何做。
现在想请教一下如何才能实现 SubDLG2 访问 SubDLG1中的数据。 不管用什么方法。当然简单就好,特别感谢。
[解决办法]
SubDLG1 发送消息给SubDLG2时,直接把m_pDLG->m_strEDIT的数据也在消息的参数中带上好了,WM_COPYDATA消息
[解决办法]
彼此有对方的CDialog*成员就可以了。
[解决办法]
初学者可以考虑用全局变量
[解决办法]
1.要对edit框的变化事件override一个函数,检测你的edit内容是否有变化。
2.把edit的内容取出给subDlg2.
大概的流程,代码是一种描述:
subDLG1:editChangeEvent(....)
{
Dlg1_editControl->getText(strEdit);
Dlg2_editControl->setText(strEdit);
}
[解决办法]
可以通过你的主对话框进行消息传递。定义一个自定义消息,有数据一方当数据变化时,把消息发送给主对话框,主对话框再把消息转发给使用数据的一方。这样模块间耦合度比较小。
[解决办法]
构造函数没用过~
提供一种 全局变量 的方法
在SubDLG1.cpp中定义
CString g_strEdit;
在SubDLG2.cpp中
#include "SubDLG1.h"
extern CString g_strEdit;
[解决办法]
获取对方的窗口句柄,随便访问彼此的成员
HWND hFig = ::FindWindow(NULL,"SubDLG2的capition"); //找到窗口,并返回窗口句柄
可以对其(SubDLG2)资源访问
[解决办法]
socket通讯!