- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC 类中获得其它类指针
当用 VC++ 的 Application Wizard 生成除了 CDialog Basiced 以外的应用程序时,将
自动产生视图类、文档类、主帧窗口类、应用程序类等等。一般来说,程序的核心
数据及操作在文档类中实现。跟界面有关的数据及操作在视图类中实现。当需要在
某个类中使用不属于该类的数据时,必须要取得该数据所属类的指针。从视图类获
得文档类的指针是很容易的,用 GetDocument 即可,这在一般的 MFC 文档中有介
绍,也是编程中极为常用的的操作,比如视图类在进行重画等操作时,往往要用到
文档类中的数据。然而只能从视图类获得文档类的指针是远远不够的,每个类都有
获得其它各个类指针的一套方法,现归纳如下:
为方便说明,现假设已用 Application Wizard 生成一个 SDI 应用程序 Test,包含如
一几个类: CTestApp,CTestDoc,CTestView,CMainFrm.字串 7
1.从视图类获得文档类的指针字串 8
如前所述,在视图类中需要引用文档类的地方之前,使用以下语句:
CTextDoc*pDoc=(CTestDoc*GetDocument(;
以后便可使用 pDoc 指针访问文档类。
此处的强制类型转换在 Test 应用程序中并不必需,因为该程序中只有一个视图
类,并且在 Initstance(中用 SDI 文档模板进行了装配,你可以在 Test.cpp 中的
Initstance(方法中看到以下语句:
CSingleDocTemplate*pDocTemplate;
pDocTemplate=new
CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CTestDoc,RUNTIME_
CLASS(CMainFrame,
RUNTIME_CLASS(CTestView;
AddDocTemplate(pDocTemplate;
以及 TestView.h 中的线上定义:
inline CTestDoc*CTestView::GetDocument(
{return(CTestDoc*m_pDocument;}
简而言之,就是说 CTestView 的 GetDocument(函数自然而然地认为 CTestDoc是与
它 相配“ ”的,当生成了一个具有多个视图类的应用程序时(如用 CSplitterWnd 将窗
口分为两栏,但这两栏并非从同一种视图类派生就属于这种情况。具体实现在本文
讨论范围之外),只有一个视图类能与唯一的文档类用文档模板进行装配,那么在
另外一个未经装配的类中要取得文档类的指针,则需时行强制类型转换。
字串 9
2.从文档类取得视图类的指针字串 7
CDocument 类提供了两个函数用于视图类的定位: GetFirstViewPosition( 和
GetNextView(, 具体语法如下:
virtual POSITION GetFirstViewPosition(const;
virtual CView*GetNextView(POSITIONrPositionconst;
注意: GetNextView( 括号中的参数用的是引用方式,因此执行后值可能改变。
GetFirstViewPosition(用于返回第一个视图位置(返回的并非视图类指针,而是一
个 POSITION 类型值), GetNextView( 有两个功能:返回下一个视图类的指针以及
用引用调动的方式来改变传入的 POSITION 类型参数的值。很明显,在 Test 程序
中,只有一个视图类,因此只需将这两个函数调用一次即可得到 CTestView 的指
针如下(需定义一个 POSITION 结构变量来辅助操作):
CTestView*pTestView;
POSITION pos=GetFirstViewPosition(;
pTestView=GetNextView(pos;
这样,便可到了 CTestVie
您可能关注的文档
- list艾宾浩斯记忆遗忘曲线单词记忆时间表.pdf
- LMWH在抗凝方面较普通肝素的优势.pdf
- LNG储罐区BLEVE爆炸危险性分析.pdf
- LNG杜瓦瓶操作危险源辨识及控制措施.pdf
- LNG加气站标准配置.pdf
- LNG加气站事故应急预案全套.pdf
- Look相关短语搭配.pdf
- LTE常见事件以及解析.pdf
- LTE技术培训试题(修复的).pdf
- LTE每天学习总结—基本过程(下行同步).pdf
- 2009-重大-面向非常规突发事件预警的Web信息流监控和传播研究.pdf
- EDA软件:OrCAD二次开发_OrCAD版本兼容性开发.docx
- “星链”软件供应链安全建设方案.pptx
- 2011-面上-组织视角下的建筑业行为安全理论(BBS)及其在工程项目管理中的应用.pdf
- ENVI遥感实验:农业耕作与城市绿地变化监测-CSDN文库.docx
- 华工毕业终期答辩模板_内容多且包含应用_包含母版和主题色.pptx
- EDA软件:OrCAD二次开发_OrCAD脚本语言应用.docx
- 2007-面上-非营利组织市场导向及其组织绩效的研究.pdf
- EDA软件:OrCAD二次开发_OrCAD与外部程序接口.docx
- EDA软件:OrCAD二次开发_OrCAD二次开发最佳实践.docx
最近下载
- 2023年贵州毕节市金沙县面向全县考调机关事业单位招聘笔试参考题库附带答案详解.pdf VIP
- 松下 Panasonic AG-CX200MC中文说明书 用户手册 说明书下载 使用指南 如何使用 详细操作 使用说明.pdf
- 经销商返利协议.docx VIP
- 消防安全知识培训课件(2023必威体育精装版).pptx
- 2023—2024学年湖南省普通高中高一下学期学业水平合格性考试化学模拟试卷.doc VIP
- 一种MES管理系统及MES管理方法.pdf VIP
- JBT 13604-2018 氧化铝专用料浆阀.pdf
- 土地法学教学课件.ppt VIP
- 2024新版(人教版)七年级英语上、下册单词带音标.pdf VIP
- 2024年初级会计职称《初级会计实务》精讲课件 第1-5章.pptx
文档评论(0)