子对话框怎样调用父对话框的公有成员变量?
我写了个基于对话框的MFC程序,在主对话框窗口中点击某个按钮就会new出个新的对话框窗口,那么这个对话框怎样调用主对话框中的公有成员变量?
比如:
class CMyDlg : public CDialog //主对话窗口
{
......
public:
int m_MyDlgA;
......
};
class CSonDlg : public CDialog
{
......
public:
int test();
......
};
在CMyDlg产生的窗口中点一按钮就new出一个CSonDlg的窗口。那么在test()中怎样调用m_MyDlgA ?
我是在test()中是这样写的:
int test()
{
.....
int a;
a=*this->GetParent()->m_MyDlgA; //请问这样对吗?不对的话改如何?
....
}
谢谢您百忙中指教。
问题点数:20、回复次数:6Top
1 楼countryboy(沉淀)回复于 2004-05-04 12:26:55 得分 8
在CSonDlg中要先声明m_MyDlgA变量,就是包含CMyDlg 的头文件~~~!!!就可以了Top
2 楼kuangjingbo(正在学习windows)回复于 2004-05-04 12:33:25 得分 2
我觉的你的办法可以呀!Top
3 楼microzhe(大笨鸟)回复于 2004-05-04 12:41:18 得分 0
已经包括了CMyDlg的头文件mydlg.h了,可是编译的时候说那句
a=*this->GetParent()->m_MyDlgA
'm_MyDlgA' is not a member of 'CWnd'
使用强制转换可以吗?比如这样:
a=((CMyDlg*)*this->GetParent())->m_MyDlgA ?
可又说:
'type cast' : cannot convert from 'class CWnd' to 'class CMyDlg *'
该如何解?或者有什么更好的办法?
不过还是要谢谢 countryboy(阿泰)Top
4 楼microzhe(大笨鸟)回复于 2004-05-04 12:45:21 得分 0
CWnd* GetParent( ) const;
这是GetParent的原型,返回的是 CWnd* ,得想办法转成 CMyDlg* 怎转?我试了用强制(如上)转换行不通?Top
5 楼ygzdev(TheEcho)回复于 2004-05-04 13:55:06 得分 10
给test函数加个参数不就可以了吗?int test(int a);调用的时候给把m_MyDlgA付给他不就可以了吗?或者CSonDlg加个构造函数CSonDlg(CWnd *pParentWnd)不也可以吗?Top
6 楼microzhe(大笨鸟)回复于 2004-05-04 13:58:41 得分 0
呵呵,我试试吧,谢谢大家~Top




