您的位置:首页 > 编程语言 > C语言/C++

C++ MFC 其他函数获得主对话框指针并使用成员的方法

2015-05-04 10:49 567 查看
A.子对话框得到父对话框的方法(此方法也可以帮助其他函数获得主对话框)
1. extern CMainApp theApp;

CMainDlg* dlg = (CMainDlg*)theApp.m_pMainWnd;

获得主对话框指针就可以调用它的成员的

2.主对话框创建子对话框时把this传入,那么在子对话框中就可以得到主对话的指针

3.用GetParent()获取父窗口指针。

设你主对话框类为CMyDialog.

CMyDialog *pDlg = (CMyDialog *)GetParent()->GetParent();

pDlg->函数或变量;

第一个GetParent()获取的是tab control指针,再通过tab control获取主对话框指针。

B.获取对话框的指针--全局变量的使用(同时可以对控件进行相应的操作)
假设CMyDialog为对话框类
1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg; // 注意啊!!这里的声明必须在CPP文件中的所有函数外部,不要在.h文件中,

2在OnInitDialog()的时候,pDlg = this;
3.在别的类使用他的时候,在别的类的Cpp中添加extern CMyDialog* pDlg;
4.pDlg->yourfunction();

C.在使用mfc的时候经常遇到自定义类访问主对话框控件的问题,例如自定义类中的方法要输出一段字符串到主对话框的EDIT控件、控制对话框的进度条等

要在自定义的类中访问主对话框空间,须获得主对话的指针。主对话框的对象在app类的InitInstance()方法中声明。查看app类的cpp文件,在InitInstance()方法中有如下语句:

CAppDlg dlg;

m_pMainWnd = &dlg;

主对话框指针被传给m_pMainWnd成员,按f12查看其定义,发现m_pMainWnd 是在afxwin.h中声明的成员: CWnd*m_pMainWnd; // main window (usually same AfxGetApp()->m_pMainWnd)

由于MFC中的自定义类会自动包含stdafx.h头文件,且stdafx.h包含afxwin.h,因此根据注释,在自定义类中可以直接使用

AfxGetApp()->m_pMainWnd

来获取主对话框的指针。之后可通过

AfxGetApp()->m_pMainWnd->GetDlgItem( );

来获得要访问的主对话框控件的指针,以对其进行访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐