网站大量收购闲置独家精品文档,联系QQ:2885784924

MFC类中获得其它类指针.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

虾虾教育 + 关注
官方认证
内容提供者

有问题请私信!谢谢啦 资料均为网络收集与整理,收费仅为整理费用,如有侵权,请私信,立马删除

版权声明书
用户编号:8012026075000021
认证主体重庆皮皮猪科技有限公司
IP属地重庆
统一社会信用代码/组织机构代码
91500113MA61PRPQ02

1亿VIP精品文档

相关文档