MFC指针获取全攻略:从View到Doc,从MainFrame到更多
需积分: 9 47 浏览量
更新于2024-10-15
收藏 33KB DOC 举报
"MFC各类指针获取的方法"
在MFC(Microsoft Foundation Classes)框架中,指针的使用是实现对象间通信和数据共享的关键。MFC是一个基于C++的类库,它为Windows应用程序开发提供了丰富的接口和工具。在MFC程序中,正确地获取和操作指针对于实现功能和维护代码的逻辑至关重要。以下是一些常见的指针获取方法:
1) **在View中获得Doc指针**:
在MFC中,视图(View)通常与文档(Document)关联。你可以通过调用`GetDocument()`成员函数来获取与当前视图关联的文档指针。例如:
```cpp
CYouSDIDoc*pDoc = GetDocument();
```
2) **在App中获得MainFrame指针**:
`CWinApp`是应用程序类的基类,其中的`m_pMainWnd`成员变量保存了主框架窗口(MainFrame)的指针。可以这样获取:
```cpp
CMainFrame*pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;
```
或者
```cpp
CMainFrame*pMain = (CMainFrame*)AfxGetMainWnd();
```
3) **在View中获得MainFrame指针**:
视图通常作为主框架窗口的子窗口,可以通过`AfxGetApp()->m_pMainWnd`或`GetParent()`来获取主框架窗口的指针:
```cpp
CMainFrame*pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;
```
或者
```cpp
CMainFrame*pMain = (CMainFrame*)GetParent();
```
4) **获得View(已建立)指针**:
获取特定的View指针,通常需要知道其类型并从主框架窗口中获取:
```cpp
CMainFrame*pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CYourView*pView = (CYourView*)pMain->GetActiveView();
```
5) **获得当前文档指针**:
在任何地方,都可以通过`AfxGetApp()->GetActiveDocument()`来获取当前活动的文档指针。
6) **获得状态栏与工具栏指针**:
主框架窗口通常拥有状态栏和工具栏,可以通过成员函数获取它们的指针:
```cpp
CStatusBar* pStatusBar = pMain->GetStatusBar();
CToolBar* pToolBar = pMain->GetToolBar();
```
7) **获得状态栏与工具栏变量**:
获取状态栏和工具栏的变量,通常需要访问它们的成员变量,如`m_wndStatusBar`和`m_wndToolBar`。
8) **在Mainframe获得菜单指针**:
通过`GetMenu()`函数获取主框架窗口的菜单指针:
```cpp
CMenu* pMenu = pMain->GetMenu();
```
9) **在任何类中获得应用程序类**:
使用`AfxGetApp()`函数可以直接获取应用程序类(通常是`CWinApp`的派生类)的指针。
10) **从文档类取得视图类的指针**:
文档类通常通过`GetFirstViewPosition()`和`GetNextView()`来获取视图的迭代器,然后通过迭代器获取视图指针。
11) **在App中获得文档模板指针**:
文档模板(CDocTemplate)管理文档、视图和框架窗口之间的关系,可以使用`AfxGetApp()->GetDocTemplate()`。
12) **从文档模板获得文档类指针**:
通过`GetDocumentClass()`获取文档模板所管理的文档类。
13) **在文档类中获得文档模板指针**:
文档类可以通过`GetDocTemplate()`获取与其关联的文档模板。
14) **从文档类取得视图类的指针**:
类似于步骤10,文档类可以通过内部数据结构获取视图指针。
15) **从一个视图类取得另一视图类的指针**:
如果视图之间有特定的关系,可能需要直接访问其他视图,这通常涉及特定的程序设计。
在MFC编程中,理解和掌握这些指针获取方法对于高效地操作对象和实现功能至关重要。在多线程环境中,指针的使用则需要更加谨慎,因为对象的生命周期和线程安全问题需要额外的关注。通过阅读MFC的文档(如MSDN)和实践,可以更深入地理解这些概念并解决实际问题。
2014-04-18 上传
2010-12-18 上传
2021-10-11 上传
2013-01-10 上传
2011-12-21 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-07-12 上传
flytobjq
- 粉丝: 0
- 资源: 1
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器