在MFC类中各种类的指针的获取和应用
理一理MFC的这几个类的关系,可以很容易明白上面的这些乱七八糟的逻辑。
App是应用域,所有的域中的东西都可以通过全局函数访问到它。
MainFrame是主框架,也基本可以用全局函数访问到。
MainFrame下是若干个ChildFrame,ChildFrame中若干个View和Document(可能不成对),ChildFrame管理着View,View和Document进行互操作。
因此整体框架就出来了,一般除了直接应用的关系都可以通过MainFrame-->Active ChildFrame-->Active View-->Document这条线进行访问 _______________________________ 关于MFC下的文档和视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特 别是对于英语较差的人,我查看了一些blog,总结了一下!希望对和我一样的人有点帮助! C **View * pView; 当然这些也许都知道是这么用的,但真正的m_pMainWnd和AfxGetApp()是什么意思也许有的人不明白. 所以在别的类下也可以先得到m_pMainWnd,就得到了MainFrame的指针. 所以得到视图类的指针,必先 得到CFrameWnd的指针m_pMainWnd,然后在调用FrameWnd下的GetActiveView 就指向当前活动视. 因为你是在自己创建的项目中得到CWndApp成员函数或者成员变量,所以你必须强制转换为你自己的项目中的类,才能找到成员函数或者变量. 3: 由上面可以知道:在View中怎样获得MainFrame指针 注: 从视图类中获得主帧窗口类指针:用函数:CWnd::GetParentFrame()或AfxGetMainWnd()也 ((CMainFrame *)CWnd::GetParentFrame()) CMDIChildWnd* pChild=(CMDIChildWnd*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)- >GetActiveFrame(); 取得活动视图: 取得活动文档: 注: 也可以用这种方法来得到多文档中的视指针 三: GetFirstViewPosition()和GetNextView() 注意:GetNextView()括号中的参数用的是引用方式,因此执行后值可能改变.GetFirstViewPosition()用于 返 回第一个视图位置(返回的并非视图类指针,而是一个POSITION类型值),GetNextView()有两个功能:返回下一个视图类的指针以及用引用 调动的方式来改变传入的POSITION类型参数的值。很明显,在Test程序中,只有一个视图类,因此只需将这两个函数调用一次即可得到 CTestView的指针如下(需定义一个POSITION结构变量来辅助操作): C*View* pView; 这 样,便可到了C*View类的指针pView.执行完成几句后,变量pos=NULL,因为没有下一个视图类,自然也没有下一个视图类的 POSITION.但是之几条语句太简单,不具有太强的通用性和安全特征;当象前面说的那样,当要在多个视图为中返回某个指定类的指针时,我们需要遍历所 有视图类,直到找到指定类为止。判断一个类指针指向的是否某个类的实例时,可用IsKindOf()成员函数时行检查. 如: |
在MFC类中各种类的指针的获取和应用相关推荐
- MFC类中获得其它类指针
MFC类中获得其它类指针 从视图类获得文档类的指针是很容易的,用GetDocument即可,然而只能从视图类获得文档类的指针是远远不够的,每个类都有获得其它各个类指针的一套方法,本文归纳如下 AD: ...
- 重贴:MFC类中获得其它类指针 (转)
重贴:MFC类中获得其它类指针 (转)[@more@] MFC类中获得其它类指针 成都:苏颖锋 (vcmfc输入并转贴) 当用VC++的Application Wizard生成除了CDialog Ba ...
- c++中基类与派生类中隐含的this指针的分析
先不要看结果,看一下你是否真正了解了this指针? 1 #include<iostream> 2 using namespace std; 3 4 class Parent{ 5 publ ...
- 使用Fastdfs上传文件时出现中文乱码。工具类中的this.getClass().getResource(“/“).getPath()获取配置文件的路径时中文乱码。
报错: Exception in thread "main" org.csource.common.MyException: item "tracker_server&q ...
- 配置springmvc在其他类中(spring容器外)获取注入bean
今天在写JedisUtils的时候要注入JedisPool,而这个属性被设置为static,@Resource和@Autowired都不可以注入,因为spring不能为静态变量依赖注入.因此需要额外的 ...
- C++ 类中函数指针的使用
文章目录 函数指针用法 类中的成员函数接收函数指针 情况1 情况2 情况3 总结 函数指针用法 函数指针可以作为一个函数的参数,传不同的函数指针给这个函数就可以让其实现不能的功能.从而我们可以复用这个 ...
- 【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )
文章目录 一.检查订阅方法缓存 二.反射获取订阅类中的订阅方法 三.完整代码示例 一.检查订阅方法缓存 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1. 获取订阅者类 ...
- python类中包含一个特殊的变量、它可以访问类的成员_Python 类的特殊成员介绍...
类的成员有两种形式 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法,私有成员命名时,前两个字符是下划线. class Foo: def __init__(self, name, age ...
- Java反射之Filed(类中的属性对象)
通过反射机制获取类中的属性对象. 1.获取类中所有的public属性(包括父类):getFields(): public class TestFiled {class A{public int age ...
最新文章
- 智能化时代的到来,智能机器人会抢走我们的工作和收入吗?
- 【Brain】复旦类脑研究院:破解大脑奥秘,为实现人工智能自我思考奠定基础...
- 部署Laravel项目到centos服务器上
- 云计算里的安全:警惕云服务被恶意利用
- unity 获得所有的tag_Unity3D_06_根据Transform、GameObject和Tag获取子对象集合
- opencv随机数的产生
- 启明云端分享|sigmastar debug工具使用说明(一)
- X509Certificate2 本地正常,放到线上内部错误
- 深度学习之生成对抗网络(6)GAN训练难题
- JQuery Datatables 服务端分页简单应用学习
- leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
- kafka修改默认端口号
- 拿到200万offer的钟钊带领团队将AutoML算法商用
- Java实现 俄罗斯方块(简陋版)
- BRVAH万能适配器
- 【大屏可视化模板】vue-dataV-echarts-elementul大屏数据可视化方案,屏幕适配方案等比例缩放
- 博思得标签打印机驱动_博思得打印机驱动
- 最新护网/重保网络安全应急演练方案[精华]
- oracle插入新字段脚本
- android画布橡皮,Android画板开发之橡皮擦功能
热门文章
- 解决mac使用svn: E170000: Unrecognized URL scheme for h
- Elasticsearch集群配置以及REST API使用
- 记录一次linux病毒清除过程
- 【转载】使用缓存的9个误区(上)
- cdev_init函数
- Linux Shell 函数返回值
- 为什么电脑插上网线半天才有网,是路由器的的问题吗?
- Leetcode 1015. Smallest Integer Divisible by K
- [记录]firefox繁体转换成简体的油猴脚本
- LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)