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

[复制链接]
查看11 | 回复5 | 2009-6-21 00:15:22 | 显示全部楼层 |阅读模式
用GetParent()获取父窗口指针。设你主对话框类为CMyDialog.CMyDialog *pDlg = (CMyDialog *)GetParent()->GetParent();pDlg->函数或变量;第一个GetParent()获取的是tab control指针,再通过tab control获取主对话框指针。
回复

使用道具 举报

千问 | 2009-6-21 00:15:22 | 显示全部楼层
1. 首先要在父窗口中定义成public的变量与函数2. 通过指针指向父窗口3. 再进行调用 .像CxxxDlg *pDlg=(CxxxDlg *)AfxGetMainWnd();CxxxDlg *pDlg=(CxxxDlg *)myDlg.GetParent();之类都行, 然后就使用pDlg->myVar pDlg->DoFun()就可以了. 给我个邮件, 我给你写个, 我邮箱: [email protected]
回复

使用道具 举报

千问 | 2009-6-21 00:15:22 | 显示全部楼层
extern CMainApp theApp;CMainDlg* dlg = (CMainDlg*)theApp.m_pMainWnd;获得主对话框指针就可以调用它的成员的
回复

使用道具 举报

千问 | 2009-6-21 00:15:22 | 显示全部楼层
HWND hParent=::GetParent();CWnd *wndParent=CWnd::FromHandle(hParent);这样可以得到父窗口的指针,剩下的事,看你自己了...我和楼主遇到过同样的问题,一个对话框没法调用它的父窗口,不管是用GetParent(),GetParentOwner(),还是AfxGetMainWnd(),或者AfxGetApp()->m_pMainWnd,都不能获得它的父窗口,这是因为此时对话框占用了程序控制权。我所知的就一种方法:那就是在对话框中定义一个CWnd* m_pParent;在构造函数中保存调用它时的参数CWnd* pParent,m_pParent=pParent;在创建对话框对象时,将父窗口指针传给它,C**Dialog dlg(this)
回复

使用道具 举报

千问 | 2009-6-21 00:15:22 | 显示全部楼层
学指针,就OK了,这是C的特色
回复

使用道具 举报

千问 | 2009-6-21 00:15:22 | 显示全部楼层
主对话框创建子对话框时把this传入,那么在子对话框中就可以得到主对话的指针,那还有什么不能做的呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行