一、文档类中

获取视图:

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

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. Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(二)__原理分析

    前置文章: <Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(一)__使用具体解释> 转载请务必注明出处:http://b ...

  2. RabbitMQ inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received

    错误:inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received 使用不同的MQ客户端时,常常会出现以上错误 ...

  3. linux 抓包 tcpdump 简单应用

    在linuxserver上,常常要定位网络问题,就须要用到抓包. 比如:tcpdump -X -s 0 host 10.17.81.22 and port 9999 -w /home/text.cap ...

  4. poj_3468,线段树成段更新

    参考自http://www.notonlysuccess.com/index.php/segment-tree-complete/ #include<iostream> #include& ...

  5. redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请求,导致 redis 短时间不可用

    redis 突然大量逐出导致读写请求block   内容目录: 现象 背景 原因 解决方案 ref 现象 redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请 ...

  6. 熟悉了下HTTP协议

    HTML是一种用来定义网页的文本,会HTML,就可以编写网页: HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信.200表示一个成功的响应,后面的OK是说明.失败的响应有404 Not ...

  7. [BZOJ3670] [NOI2014] 动物园 解题报告 (KMP)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3670 Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅, ...

  8. 131.lambda表达式小结

    C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作.Lambda的语法形式如下:[函数对象参数](操作符重载函数参数) mutable或exception声明->返回 ...

  9. 《剑指offer》链表中倒数第k个结点

    一.题目描述 输入一个链表,输出该链表中倒数第k个结点. 二.输入描述 一个链表 三.输出描述 链表的倒数第k个结点 四.牛客网提供的框架 /* struct ListNode { int val; ...

  10. <Sicily>Pair

    一.题目描述 The N cities of Estiah are connected by N-1 roads. The roads are built in a way that it's alw ...