MFC中 自定义类访问主对话框控件的方法
2013-06-20 23:53
288 查看
之前一直在找有木有好点的方法。现在终于被我找到,收藏之~~~~~~
在使用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获取主对话框指针。
下面是通过全局变量的使用来[b]获取对话框的指针[/b]
假设CMyDialog为对话框类
1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg;
2在OnInitDialog()的时候,pDlg = this;
3.在别的类使用他的时候,在别的类的Cpp中添加extern CMyDialog* pDlg;
4.pDlg->yourfunction();
来源:http://blog.sina.com.cn/s/blog_624ca8080100rkeb.html
在使用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获取主对话框指针。
下面是通过全局变量的使用来[b]获取对话框的指针[/b]
假设CMyDialog为对话框类
1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg;
2在OnInitDialog()的时候,pDlg = this;
3.在别的类使用他的时候,在别的类的Cpp中添加extern CMyDialog* pDlg;
4.pDlg->yourfunction();
来源:http://blog.sina.com.cn/s/blog_624ca8080100rkeb.html
相关文章推荐
- 控件方法MFC对话框编程(二):控件的访问
- MFC访问对话框控件的7种方法
- Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)
- MFC子线程访问主线程对话框程序的控件对象
- Windows程序设计 访问对话框控件的七种方法(1)
- 两种方法实现MFC 对话框最大化时控件也随比例最大化或者还原
- 猎豹MFC--对话框 静态文本 编辑框 按钮 对话框 访问控件
- vc++ 对话框控件访问的7种方法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- Windows程序设计 对话框控件访问的七种方法(2)
- mfc访问控件的多种方法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- MFC基于对话框风格按钮控件添加图片的方法(大神止步)
- MFC学习笔记之:7种访问对话框控件的方式
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- Windows程序设计 对话框控件访问的七种方法(3)
- [MFC]设置对话框所有控件字体为同一字体的简单方法
- MFC访问对话框控件的几种方式
- 在VS2010里MFC对话框中使用OpenGL绘图,添加的控件不显示的一种解决方法
- [MFC]在程序中访问对话框中的控件——GetDlgItem函数