一、文档类中

获取视图:

先获取主窗体,在根据主窗体获取视图

pMain->GetActiveDocument();注意类型转换

由于文档中可能包含多个视图,可以按照下面函数获取:

CView*   CTestDoc::GetView(CRuntimeClass*   pClass)

{

CView*  pView;

POSITION   pos=GetFirstViewPosition();

while(pos!=NULL)

{

pView=GetNextView(pos);

if(!pView->IsKindOf(pClass))

break;

}

if(!pView->IsKindOf(pClass))

{

AfxMessageBox("Connt   Locate   the   View./r/n");

return   NULL;

}

return   pView;

}

同理如果有多个视图,在一个视图中获取另外一个视图的方法可以如下:

CView* CTestAView::GetView(CRuntimeClass* pClass)

{

CTestDoc* pDoc=(CTestDoc*)GetDocument();

CView*    pView;

POSITION   pos=pDoc->GetFirstViewPosition();

while(pos!=NULL)

{

pView=pDoc->GetNextView(pos);

if(!pView->IsKindOf(pClass))

break;

}

if(!pView->IsKindOf(pClass))

{

AfxMessageBox("Connt Locate the View.");

return   NULL;

}

return  pView;

}

获取主窗体:

CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();

先获取App,再根据App获取主窗体

CXXXApp *pApp = (CXXXApp *)AfxGetApp();

CMainFrame *pMain = (CMainframe*)pApp->GetMainWnd();

CMainFrame *pMain = (CMainframe*)pApp->m_pMainWnd;

获取App:

CXXXApp *pApp = (CXXXApp *)AfxGetApp();

二、视图类中

获取文档:

GetDocument()

返回的即为对应文档的指针,不是CDocument类,不需要进行类型转换。

获取主窗体:

CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();

或者先获取App,在根据App获取主窗体

CXXXApp *pApp = (CXXXApp *)AfxGetApp();

CMainFrame *pMain = (CMainframe*)pApp->GetMainWnd();

CMainFrame *pMain = (CMainframe*)pApp->m_pMainWnd;

获取App:

CXXXApp *pApp = (CXXXApp *)AfxGetApp();

三、主窗体中

获取文档:

GetActiveDocument();注意类型转换

获取视图:

GetActiveView();注意类型转换

获取App:

CXXXApp *pApp = (CXXXApp *)AfxGetApp();

四、App类中

获取主窗体:

CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();

CMainFrame *pMain = (CMainframe*)this->GetMainWnd();

CMainFrame *pMain = (CMainframe*)this->m_pMainWnd;

获取视图:

先获取CMainFrame,再根据CMainFrame获取视图:

pMain->GetActiveDocument();注意类型转换

获取文档:

先获取CMainFrame,再根据CMainFrame获取文档:

pMain->GetActiveDocument();注意类型转换

五、程序中的其他类中

参考上面的方式,其中App可由AfxGetApp获取,CMainFrame可由AfxGetMainWnd获取,任何地方都可以,Doc和View是属于CMainFrame的两个结构,可以通过CMainFrame获取。

【VC++学习笔记四】MFC应用程序中框架类的获取的更多相关文章

  1. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. iOS学习笔记(四)——iOS应用程序生命周期

    开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity.Service.今天我们接触一下iO ...

  3. struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素

    一.源码: struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE s ...

  4. struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素

    源码: strust.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...

  5. VC学习笔记---ATL MFC CLR三个库的区别

    MFC.ATL和CLR是VC2005内置的三大库,涵盖了Windows的各种开发方法和开发应用.当然关于C++开发的库不止这三个,不过这三个是微软推荐. 从编程所处层次而言,WIN32为最底层,其次是 ...

  6. MyBatis学习笔记(四)——解决字段名与实体类属性名不相同的冲突

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4264425.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演 ...

  7. 孙鑫VC学习笔记:多线程编程

    孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modified ...

  8. VC学习笔记:对话框

    VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date:O ...

  9. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

随机推荐

  1. iOS - 自己定义alertView,继承自UIView,能够加入子视图,标题图片+文字

    这个更简单,能够看下demo       https://github.com/DYLAN-LWB/WBAlertView 自己定义alertView,继承自UIView,能够在消息区域加入子视图:a ...

  2. hadoop 多文件夹输入,map到reduce怎样排序

    使用MultipleInputs.addInputPath 对多个路径输入 如今如果有三个文件夹,并使用了三个mapper去处理, 经过map处理后,输出的结果会依据key 进行join, 假设使用T ...

  3. django 笔记8 url模板 自定义函数 simple_tag

    感谢alex老师~ 知识点: URL - 两个没见 url>路由系统> 函数或类 > 返回字符串 Form表单提交: 提交 >url>函数或类中的方法 -.. HttpR ...

  4. 解决Linux下yum安装无法解析URL的问题

    问题: [root@yaya ~]# yum -y install gcc-* Loaded plugins: fastestmirror, presto Could not retrieve mir ...

  5. sicily 1004. 简单哈希

    Description 使用线性探测法(Linear Probing)可以解决哈希中的冲突问题,其基本思想是:设哈希函数为h(key) = d, 并且假定哈希的存储结构是循环数组, 则当冲突发生时,  ...

  6. decision tree 决策树(一)

    一 决策树 原理:分类决策树模型是一种描述对实例进行分类的树形结构.决策树由结点(node)和有向边(directed edge)组成.结点有两种类型:内部结点(internal node)和叶结点( ...

  7. nginx省去每次查看进程操作

       在我们想要关闭.重启等操作时需要查看 nginx 的进程,那么有没有一种方法省去查看的步骤?                                  kill -HUP `cat lo ...

  8. VUE框架学习——脚手架的搭建

    #我的VUE框架学习 题记:初识VUE,觉得VUE十分的不错,故决定去深入的了解学习它,工欲善其事,必先利其器,下面是我搭建vue环境的过程! #一.项目搭建及初始化 1.安装:node.js:去官网 ...

  9. 学习优化《机器学习与优化》中文PDF+英文PDF

    正在学习机器学习中的优化处理,感觉<机器学习与优化>写得还是比较通俗易懂的,第七章特征选择我需要,特征提取:相关系数,相关比,熵和互信息..更高级的应该是文本挖掘的特征提取,比如LDA提取 ...

  10. 监控memcached服务

    #!/bin/bash #监控memcached服务 printf "del key\r\n" | nc 127.0.0.1 11211 &>/dev/null #使 ...