vc 子窗口怎么调用父窗口的函数和变量啊?

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:03:55
mfc 我用tab control 里面的窗口中 调用主对话框中的函数和变量,怎么调用啊?希望给下例子,谢谢

用GetParent()获取父窗口指针。
设你主对话框类为CMyDialog.
CMyDialog *pDlg = (CMyDialog *)GetParent()->GetParent();
pDlg->函数或变量;
第一个GetParent()获取的是tab control指针,再通过tab control获取主对话框指针。

我和楼主遇到过同样的问题,一个对话框没法调用它的父窗口,不管是用GetParent(),GetParentOwner(),还是AfxGetMainWnd(),或者AfxGetApp()->m_pMainWnd,都不能获得它的父窗口,这是因为此时对话框占用了程序控制权。我所知的就一种方法:
那就是在对话框中定义一个CWnd* m_pParent;在构造函数中保存调用它时的参数CWnd* pParent,m_pParent=pParent;在创建对话框对象时,将父窗口指针传给它,C**Dialog dlg(this)

1. 首先要在父窗口中定义成public的变量与函数
2. 通过指针指向父窗口
3. 再进行调用 .

像CxxxDlg *pDlg=(CxxxDlg *)AfxGetMainWnd();
CxxxDlg *pDlg=(CxxxDlg *)myDlg.GetParent();
之类都行, 然后就使用pDlg->myVar pDlg->DoFun()就可以了.

给我个邮件, 我给你写个, 我邮箱: juncox@163.com

方法很多种。

★方法1
1、在主对话框类中加入:friend class YourChildWndClass;
2、访问的时候:(( CYourMainDlg * ) GetParent())-> m_SomeVal;
3、如果窗口的父窗口不是主对话框窗口,那么可以修改子窗口的构造函数,或者添加一个方法用来设置主对话框窗口句柄。并且在需要访问的窗口类中添加一个成员变量用来保存主对话框句柄。例如:
CYourChildWnd::CYourCh