- 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
您可能关注的文档
最近下载
- 寻甸基础资料汇编.docx
- 钟俊良述 职 述廉 报 告.doc VIP
- 钻井液用纳米二氧化硅封堵剂的制备与性能评价-褚奇.pdf VIP
- 人教版英语八年级上册完型填空(15空)+阅读填表专项训练一(含详解).pdf VIP
- QCR 278-2015 机车空调装置.pdf
- 广东省广州市海珠区2023-2024学年高一上学期期末考试语文试题.doc VIP
- 防汛抢险方案.docx VIP
- 2020-2021某大学《现代仪器分析》期末课程考试试卷(含答案).doc
- T_CMES 26009—2021八月瓜鲜果皮肉籽分离技术规范.pdf VIP
- 钳工技能考试:高级车辆钳工(货车)考试考点巩固(强化练习).docx VIP
文档评论(0)