在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 ...
最新文章
- memcached和redis的区别和应用场景
- java 查询sql_java如何实现sql连接和查询的代码?
- python入门编程题库-Python随笔30:Python基础编程练习题25~26
- 《Leadership and the One Minute Manager》读书笔记之一
- java创建描述文件,IT技术交流:Java 轻量级整合开发
- JAVAspringboot微服务b2b Spring MVC+mybatis+spring cloud+spring boot+spring security
- 如何用苹果手机生成扫描件
- 自动化测试框架实践2--STAF
- freetype字体位图转距离场_那些火遍ins的字体小技巧,不看你就亏了
- 2-1:套接字(Socket)编程之必备知识
- debian apache php mysql_Debian/在Debian上安装Apache Mysql PHP
- Sqlit--学习教程(基本操作1)
- 使用 Adobe Acrobat 裁剪 PDF 白边及其他操作
- Ubuntu18.04笔记本触控板失效解决办法
- LabWindows/CVI学习总结——前言
- 微信h5界面隐藏分享按钮
- python兔子繁殖问题
- 回首2013,一个屌丝码农的感慨
- python teradata_使用Python连接Teradata
- 《深入理解Java虚拟机》知识点目录
热门文章
- 钢铁侠要为Facebook的智能管家配音,really?
- SCOM2012R2 APM系列(三) 配置Java应用程序监控
- CENTOS6.5 TFS部署
- 【WPF】关于XAML Parse Exception,无法创建XXX的实例异常的一点小心得
- 可关闭与最小化的右下角浮动广告代码
- 让C68平台“冷又静”
- Web Server 和 HTTP 协议
- 二分法(三):采用二分法解决“最大化最小值问题”
- 计算机基础与python安装
- 6.3.4 新的_Bool类型