MFC自定义类访问主窗口控件
2014-09-29 16:46
295 查看
在使用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获取主对话框指针。
获取对话框的指针--全局变量的使用
假设CMyDialog为对话框类
1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg;
2在OnInitDialog()的时候,pDlg = this;
3.在别的类使用他的时候,在别的类的Cpp中添加extern CMyDialog* pDlg;
4.pDlg->yourfunction();
要在自定义的类中访问主对话框空间,须获得主对话的指针。主对话框的对象在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();
相关文章推荐
- 基于MFC的大型数据文件处理方法
- 深入剖析MFC中Windows消息处理、运行机制
- MFC中几个比较常用的头文件及其用法
- VC MFC删除指定文件或文件夹内容
- MFC.UI线程问题
- duilib进阶教程 -- 在duilib中使用MFC (2)
- 项目难题之MFC串口通信报错”应用程序发生异常unknown software exception(ox80000003),位置为ox7c92120e"
- error MSB8031 Building an MFC project for a non-Unicode character set is deprecated.
- (VS2010)MFC中List Control基本用法
- 非MFC工程使用MFC库时的问题及解决办法
- mfc 常用方法
- HOOPS/MFC编程指南一(HOOPS/MFC Programming Guide)
- MFC MDI 工程禁用win7任务栏(taskbar)多视图缩略图(preview)功能
- MFC文档视图中窗口切换 (2012-05-11 18:32:48)
- MFC对话框程序EDIT类控件的自动换行,垂直滚动条自动下移
- 快速查找mfc按键对应的程序代码
- MFC设置对话框、字体对话框、颜色对话框
- C++/MFC-动态链接库(DLL)
- 重构,我的CSTSocket类,NO MFC。
- 转载:深入分析MFC文档视图