MFC编程-文档视图.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC编程-文档视图.doc

MFC编程-文档视图 MiniDraw只有一个About对话框,这回要把它变成一个MDI程序,借助于文档视图的威力,并不需要花很大的力气。 MDI由4个类组成: 主框架类,由CMDIFrameWnd派生而来,表示程序的MDI父窗口。 子框架类,由CMDIChildWnd派生而来,表示程序的MDI子窗口。 视图类,由CView派生而来,表示一个文档视图,内嵌于子窗口。 文档类,由CDocument派生而来,表示一份“文档”,一份“文档”可以由多个视图表现。 现在创建这些类,全部通过新建头文件和源文件生成,下面它们的代码: MainFrm.h #ifndef LINZHENQUN_MAINFMR_H_ #define LINZHENQUN_MAINFMR_H_ class CMainFrm: public CMDIFrameWnd { DECLARE_DYNAMIC(CMainFrm) public: CMainFrm(); }; #endif //LINZHENQUN_MAINFMR_H_ MainFrm.cpp #includeafxwin.h #include MainFrm.h IMPLEMENT_DYNAMIC(CMainFrm, CMDIFrameWnd) CMainFrm::CMainFrm() { } DrawChildFrm.h #ifndef LINZHENQUN_DRAWCHILDFRM_H_ #define LINZHENQUN_DRAWCHILDFRM_H_ class CDrawChildFrm: public CMDIChildWnd { DECLARE_DYNCREATE(CDrawChildFrm) public: CDrawChildFrm(); }; #endif //LINZHENQUN_DRAWCHILDFRM_H_ DrawChildFrm.cpp #include afxwin.h #include DrawChildFrm.h IMPLEMENT_DYNCREATE(CDrawChildFrm, CMDIChildWnd) CDrawChildFrm::CDrawChildFrm() { } DrawView.h #ifndef LINZHENQUN_DRAWVIEW_H_ #define LINZHENQUN_DRAWVIEW_H_ class CDrawView: public CView { DECLARE_DYNCREATE(CDrawView) public: CDrawView(); protected: virtual void OnDraw(CDC* pDC); }; #endif //LINZHENQUN_DRAWVIEW_H_ DrawView.cpp #include afxwin.h #include DrawView.h IMPLEMENT_DYNCREATE(CDrawView, CView) CDrawView::CDrawView() { } void CDrawView::OnDraw( CDC* pDC ) { } DrawDoc.h #ifndef LINZHENQUN_DRAWDOC_H_ #define LINZHENQUN_DRAWDOC_H_ class CDrawDoc: public CDocument { DECLARE_DYNCREATE(CDrawDoc) public: CDrawDoc(); }; #endif //LINZHENQUN_DRAWDOC_H_ DrawDoc.cpp #include afxwin.h #include DrawDoc.h IMPLEMENT_DYNCREATE(CDrawDoc, CDocument) CDrawDoc::CDrawDoc() { } 4个类全部只是空架,具体的事情已经由基类处理了,其中只有CDrawView覆盖OnDraw,因为它是一个抽象成员函数,所以不得不覆盖一下。 除了MainFrm类,其他三个类都声明了DYNCREATE宏,因而具备动态创建的能力。 接下来要在CDrawApp::InitInstance创建这些类实例,不过之前还得创建一些资源,比如菜单,??源字符串。 先为主窗口创建一个菜单,这是AFX强制要求的,否则有很多断言等着你,在Resource.rc里插入一个菜单,ID为:IDR_MAINFRAME,然后加几个菜单项,效果如下: 接着为程序和主窗口创建一个图标,这回用导入的方式,毕竟有那么多现成的图标,何必自己来动手呢,导入: 我们将导入的图标ID也命名为IDR_MAINFRAME,等会儿会说明原因。可执行文件的图标由ID值为1的图标决定,我们第一次导入

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档