【VC++学习笔记四】MFC应用程序中框架类的获取
一、文档类中
获取视图:
先获取主窗体,在根据主窗体获取视图
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应用程序中框架类的获取的更多相关文章
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- iOS学习笔记(四)——iOS应用程序生命周期
开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity.Service.今天我们接触一下iO ...
- struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素
一.源码: struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE s ...
- struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素
源码: strust.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...
- VC学习笔记---ATL MFC CLR三个库的区别
MFC.ATL和CLR是VC2005内置的三大库,涵盖了Windows的各种开发方法和开发应用.当然关于C++开发的库不止这三个,不过这三个是微软推荐. 从编程所处层次而言,WIN32为最底层,其次是 ...
- MyBatis学习笔记(四)——解决字段名与实体类属性名不相同的冲突
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4264425.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演 ...
- 孙鑫VC学习笔记:多线程编程
孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010 HQU Email:zgzhaobo@gmail.com QQ:452728574 Latest Modified ...
- VC学习笔记:对话框
VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Date:O ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
随机推荐
- less11 属性合并
less //+ 合并以后,以逗号分割属性值 .mixin() { box-shadow+: inset 0 0 10px #555 ; } .myclass { .mixin(); box-shad ...
- m_Orchestrate learning system---二十六、动态给封装好的控件添加属性
m_Orchestrate learning system---二十六.动态给封装好的控件添加属性 一.总结 一句话总结:比如我现在封装好了ueditor控件,我外部调用这个控件,因为要写数据到数据库 ...
- Android Button 按钮 设置 各种状态 图片 颜色
有2个方法可以实现,一种是用 选择器 定义每种状态的图片 selec.xml <?xml version="1.0" encoding="utf-8"?& ...
- Java类和对象11
首先,编写一个类ChongZai,该类中有3个重载的方法void print():其次,再编写一个主类来测试ChongZai类的功能. public class ChongZai { public v ...
- OpenGL编程逐步深入(五)Uniform 变量
准备知识 在这个教程中我们会遇到一种新的Shader变量类型,即uniform变量.attribute(属性)变量和uniform变量的不同之处在于attribute 变量中包含顶点的具体数据,当每次 ...
- file_get_contents 无法采集 https 网站
<?php echo file_get_contents("https://www.baidu.com"); ?> 运行以上代码会报以下错误: 再运行一次去看看!
- bzoj1612 Usaco08 Jan 牛大赛
水题模拟 建一个图,每两个牛进行比赛就连一条边,然后两遍dfs求出比他弱和比他强的牛,最后如果相加数量等于n,说明他能与全部的牛进行比较,排名确定. #include<bits/stdc++.h ...
- Linux服务器性能评估与优化
一.影响务器性能因素 影响企业生产环境Linux服务器性能的因素有很多,一般分为两大类,分别为操作系统层级和应用程序级别.如下为各级别影响性能的具体项及性能评估的标准: (1)操作系统级别 内存: C ...
- tab.py
vim tab.py #!/usr/bin/env python # #Tab import sys import readline import rlcompleter import atexit ...
- python -迭代器与生成器 以及 iterable(可迭代对象)、yield语句
我刚开始学习编程没多久,对于很多知识还完全不知道,而有些知道的也是一知半解,我想把学习到的知识记录下来,一是弥补记忆力差的毛病,二也是为了待以后知识能进一步理解透彻时再回来做一个补充. 参考链接: 完 ...