MFC子窗口类间互相访问?
VC6.0上MFC编程:我新建一个工程,主面版,类是CD,然后以child的显示方式添加两个子面板ID1,ID2,类分别是CD1,CD2,在CD中的指针是p1,p2,我要在子面板ID1的类CD1中访问子面板ID2的类CD2中的成员,我的方法是((CD2*)((CD*)GetParent()->p2))->面板2类CD2中的函数或者变量,可为什么获不到CD2的指针,我用GetDlgItem(ID2),还有findwindow,没有语法错误,还是获得不到,我哪里错了,我有什么办法实现子面板类之间的互相访问?
------解决方案--------------------class CD;
class CD1
{
public:
CD *m_pFrameCD;
}
class CD2
{
public:
CD *m_pFrameCD;
}
class CD
{
pulic:
CD1 *m_p1;
CD2 *m_p2;
....
//在初始化函数中:
m_p1 = new CD1;
m_p1->m_pFrameCD = this;
m_p2 = new CD2;
m_p2->m_pFrameCD = this;
}
------解决方案--------------------在CD1,CD2类的前面先申明 class CD;然后在相应的cpp中把CD的头文件include进来
------解决方案--------------------在CD主版面 定义一个全局指针
1.
CD *MainDlg;
在主版面的OnInitDialog函数中,将主版面的this指针传递给他
MainDlg = this;
2.
在子版本CD1头文件中全局引用该指针
extern CD *MainDlg;
之后,您可以随意在CD1子版面的类成员函数中随意引用该全局指针
,比如CD1中有类成员变量
bool IsCd1Bool;
MainDlg->IsCd1Bool = false;
即可