MFC应用程序框架中各类之间的访问方法.docxVIP

MFC应用程序框架中各类之间的访问方法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC 应用程序框架中各类之间的访问方法(转) 2007-04-17 17:01 在Visual C++ 6.0 开发环境中,我们可以用 MFC AppWizard 自动生成一个应用程序。其中包括了应用 类,主边框窗口类,子边框窗口类( MDI 应用程序),文档类和视 图类。另外,系统还自动生成了一个 文档模板类对象,它把文档类,文档边框窗口类( SDI 中的主边框窗口类或 MDI 中的子边框窗口类),视 图类联系在一起,组成一个有机的整体。 在一些专业教材书中,虽然提到了它们之间的关系,但都没有全面系统地予以介 绍。使得初学 VC 的朋友在各类对象之间相互访问时感到非常困难。笔者经过一段时间 的总结,现将各类对象之间的关系 以及相互之间访问的方法介绍如下: 。应用类对象 : 应用类对象由应用框架自动生成。虽然在应用类的 cpp 文件中有一个应用类对象 的声明语句, 但该对象却无法使用。用户可以通过 CWinApp * AfxGetApp() 全局函数得到指向应用类对象的指针,由 于该函数返回值为 CWinApp * 类型,因此需要进行转换。用法如下: 假设您的应用类名为: CExampleApp 。 CExamlpleApp * p=(CExamlpleApp *)AfxGetApp(); p 即为指向应用类对象的指针。 。主边框窗口类(CMainFrame): 主边框窗口类对象的生成较为复杂,对于 MDI 应用程序,主边框窗口类对象由应用类对象在它的 InitInstance() 函数中构造生成;对于 SDI 应用程序,主边框窗口类 对象由文档模板类构造生成。 用户可以用下列方式获得指向主边框窗口类对象的指针: 利用全局函数 AfxGetMainWnd(). 通过应用类的 GetMainWnd() 成员函数或 m_pMainWnd 成员变量。 对于 MDI 应用程序,还可以通过子边框窗口类的 GetMIDFrame() 成员函数 得到。 同理,以上各函数的返回值也是 CFrameWnd * 类型( SDI 应用程序)或 CMDIFrameWnd * 类型( MDI 应用程序),仍需要转换成 CMainFrame * 类型。 注:以下各函数的返回值均需要转换成相应类的指针类型。下面不再敖述。 3. 文档模板类: 文档模板类对象由应用对象在 InitInstance() 函数中构造生成。它分为:单文档 模板类(CSingleDocTemplate) 和多文档模板类(CMultiDocTemplate) ,分别对应 SDI 应用程序和 MDI 应用 程序。二者均由CDocTemplate 派生。文档模板类把文档类, 文档边框 窗口类(SDI 中的主边框窗口类或 MDI 中的子边框窗口类),视图类联系为一个有机的 整体。应用类对象通常只生成一个文档模板类对象 ,不过用户可以自己生成多个文档模板类对象 ,从而使SDI 也可以打开多个文档,具有了MDI 的特征.所有的 文档模板类对象组 成了一个链表,应用类的 m_pDocManger 成员变量指向该链表。用户可以通过应用类的成员函数 GetFirstDocTemplatePosition() 和 GetNextDocTemplate(POSITION pos) 来访问该链表: POSITION pos; pos=GetFirstDocTemplatePosition(); CDocTemplate * pDocTemplate; pDocTemplate=GetNextDocTemplate(pos); pDocTemplate 即是指向第一个文档模板类对象的指针 ,用户还可以继续调用GetNextTemplate() 得到下一个文档模板类对象. 4 。子边框窗口类(CChildFrame): 子边框窗口类是专门针对 MDI 应用程序而言的,它由文档模板类构造生成。对它的访问可用以下方式实现: 通过主边框窗口类的 CFrameWnd * GetActiveFrame() 得到指向该对象的指针。 文档类: 文档类对象由文档模板类构造生成。单文档模板类只能生成一个文档类对象,并用成员变量 m_pOnlyDoc 指向该对象。多文档模板类可以生成多个文档类对象,另用成 员变量 m_docList 指向文档对象组成的链表。在 SDI 应用程序中,当我们生成多个单 文档模板类对象时,就可以打开多个文档。 用户可以通过多文档模板类对象的成员函数 GetFirstDocPosition() 和 GetNextDoc(POSITION pos) 来访问文档对象组成的链表: POSITION pos; pos=GetFirstDocPosition(); CDocument *pDoc; pDoc=

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档