子对话框如何访问主对话框中的控件
2013-08-16 17:52
127 查看
在使用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( );
来获得要访问的主对话框控件的指针,以对其进行访问。
子对话框得到父对话框的方法
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获取主对话框指针。
获取对话框的指针--全局变量的使用
要在自定义的类中访问主对话框空间,须获得主对话的指针。主对话框的对象在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( );
来获得要访问的主对话框控件的指针,以对其进行访问。
子对话框得到父对话框的方法
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获取主对话框指针。
获取对话框的指针--全局变量的使用
假设CMyDialog为对话框类 1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg; 2在OnInitDialog()的时候,pDlg = this; 3.在别的类使用他的时候,在别的类的Cpp中添加extern CMyDialog* pDlg; 4.pDlg->yourfunction(); 获取对话框句柄 dlg.GetSafeHwnd(); |
相关文章推荐
- 全局函数如何访问对话框控件
- 全局函数如何访问对话框控件
- 在MFC对话框中,如何让控件Static和Radio和CheckBox背景透明?
- MFC如何使控件大小随着对话框大小自动调整
- MFC:如何让对话框中的控件和对话框一起变小变大
- 安卓如何关联XML,并且访问XML里面的控件
- 如何从公共对话框控件中提取多个文件名称
- 如何让TAB控件的子对话框随着TAB的父对话框的最大化而最大化
- VC如何获取对话框中控件的坐标
- [MFC]如何改变对话框EDIT Control内控件的字体?
- 如何访问一个控件的 Protected 段的成员,改变 DBNavigator 的行为
- Windows程序设计 对话框控件访问的七种方法(2)
- MFC对话框初始化函数是在哪里?以及如何为MFC的EDIT控件设置默认显示值?
- 总结对话框控件访问的七种方式
- MFC如何使控件大小随着对话框大小自动调整
- VC:对话框控件访问七种方式
- 对话框基础知识(二)--访问控件的五种方式
- 教你如何解决“线程间操作无效: 从不是创建控件的线程访问它”
- 如何使用 API 从 VisualBasic 访问高级控件
- 如何消除Microsoft Office Spreadsheet 11.0控件引起的断言失败对话框