一、文档类中

获取视图:

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

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. Spring的控制反转(IOC)和依赖注入(DI)具体解释

    Spring的控制反转(IOC)和依赖注入(DI)具体解释 首先介绍下(IOC)控制反转: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制器就有应 ...

  2. Redis 存储图片 [base64/url/path]vs[object]

    一.base64图片编解码 基本流程:从网络获取下载一张图片.然后base64编码,再base64解码,存到本地E盘根文件夹下. import java.awt.image.BufferedImage ...

  3. ASP.NET Application and Page Life Cycle

    ASP.NET Application Life Cycle Overview for IIS 7.0 https://msdn.microsoft.com/en-us/library/bb47025 ...

  4. flatMap作用

    总结:1. map会将每一条输入映射为一个新对象.{苹果,梨子}.map(去皮) = {去皮苹果,去皮梨子} 其中: “去皮”函数的类型为:A => B 2.flatMap包含两个操作:会将每一 ...

  5. 设计url 通过分发的方式 Xadmin_demo

    如 urlpatterns = [ url(r'^Xadmin/',([ url(r'^add/$', views.add) url(r'^delete/$', views.delete) ], No ...

  6. Kali linux 2016.2(Rolling)中metasploit的搜集特定网站的目录结构

    不多说,直接上干货! parent directory site: testfire.net 至于这里怎么FQ,很简单,请见我下面的博客! kali 2.0安装 lantern(成功FQ) shado ...

  7. CheckException和RuntimeException

    java文档中对RuntimeException的定义是: RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类. 可能在执行方法期间抛出但未被捕获的 Runt ...

  8. mac terminal终端怎么退出python命令行

    >>>使用 quit(), exit(), 或者Command+d,或者Command+z退出命令行.

  9. UI Framework-1: views Windowing

    views Windowing views provides support for creating dialog boxes and other kinds of windows through ...

  10. javascript实现多线程 Concurrent.Thread.js

    在这次我的项目中,因为前端要检测硬件加载并识别,再向后台请求发送数据,然后再返回的相应的配置文件!在这过程,要好时好几秒钟,严重影响体验效果,所以在网上靠看的方案,运用多线程去处理,这效果明显改善! ...