友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第244章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




       。。。 

       BOOL CGraphApp::InitInstance() 

       { 

               。。。 

               CMultiDocTemplate* pDocTemplate; 

               pDocTemplate = new CMultiDocTemplate( 

                       IDR_GRAPHTYPE; 

                       RUNTIME_CLASS(CGraphDoc); 

                       RUNTIME_CLASS(CChildFrame); // custom MDI child frame 



                                                                                              739 


…………………………………………………………Page 802……………………………………………………………

                   第篇    深入  MFC  程式設計 



                                   RUNTIME_CLASS(CGraphView)); 

                           AddDocTemplate(pDocTemplate); 



                           pDocTemplate = new CMultiDocTemplate( 

                                   IDR_NEWTYPE; 

                                   RUNTIME_CLASS(CNewDoc); 

                                   RUNTIME_CLASS(CMDIChildWnd); // use directly 

                                   RUNTIME_CLASS(CEditView)); 

                           AddDocTemplate(pDocTemplate); 

                           。。。 

                    } 



                   CMultiDocTemplate 的第一个参数(resource ID )也不能再延用Graph 文件类型所使用的 



                   IDR_GRAPHTYPE 了。要知道,这个ID 值关系非常重大。我们得自行设计一套适用于 



                   NewDoc 文件类型的UI 系统出来(包括菜单、工具栏、文件存取对话框的内容、文件 



                    图标、窗口标题。。。)。 



                   怎么做?第7章的深入讨论将在此开花结果!请务必回头复习复习「Document Template 



                   的意义」一节,我将直接动作,不再多做说明。 



             新的 UI 系统 



                   下面就是为了这新的 NewDoc  文件型态所对应的  UI  系统,新添的文件內容 (没有什么 



                   好工具可以帮忙,一般文字编辑器的  copy/paste  最快): 



                   // in RESOURCE。H 

                   #define IDD_ABOUTBOX                    100 

                   #define IDR_MAINFRAME                   128 

                   #define IDR_GRAPHTYPE                   129 

                   #define IDR_NEWTYPE                     130 

                    。。。 



                   // in GRAPH。RC 

                   IDR NEWTYPE  ICON 

                       _                 DISCARDABLE   〃resNewDoc。ico〃    // 此icon 需自行备妥 



                   IDR NEWTYPE MENU 

                       _              PRELOAD DISCARDABLE 

                   BEGIN 

                       POPUP 〃&File〃 

                       BEGIN 



740 


…………………………………………………………Page 803……………………………………………………………

                                                      第 13 章    多重文件與多重顯示 



        MENUITEM 〃&NewtCtrl+N〃;                ID_FILE_NEW 

        MENUITEM 〃&Open。。。tCtrl+O〃;            ID_FILE_OPEN 

        MENUITEM 〃&Close〃;                      ID_FILE_CLOSE 

        MENUITEM 〃&SavetCtrl+S〃;               ID_FILE_SAVE 

        MENUITEM 〃Save &As。。。〃;                 ID_FILE_SAVE_AS 

        MENUITEM SEPARATOR 

        MENUITEM 〃&Print。。。tCtrl+P〃;           ID_FILE_PRINT 

        MENUITEM 〃Print Pre&view〃;              ID_FILE_PRINT_PREVIEW 

        MENUITEM 〃P&rint Setup。。。〃;             ID_FILE_PRINT_SETUP 

        MENUITEM SEPARATOR 

        MENUITEM 〃Recent File〃;                 ID_FILE_MRU_FILE1; GRAYED 

        MENUITEM SEPARATOR 

        MENUITEM 〃E&xit〃;                       ID_APP_EXIT 

    END 

    POPUP 〃&Edit〃 

    BEGIN 

        MENUITEM 〃&UndotCtrl+Z〃;               ID_EDIT_UNDO 

        MENUITEM SEPARATOR 

        MENUITEM 〃Cu&ttCtrl+X〃;                ID_EDIT_CUT 

        MENUITEM 〃&CopytCtrl+C〃;               ID_EDIT_COPY 

        MENUITEM 〃&PastetCtrl+V〃;              ID_EDIT_PASTE 

    END 

    POPUP 〃&View〃 

    BEGIN 

        MENUITEM 〃&Toolbar〃;                    ID_VIEW_TOOLBAR 

        MENUITEM 〃&Status Bar〃;                 ID_VIEW_STATUS_BAR 

    END 

    POPUP 〃&Window〃 

    BEGIN 

        MENUITEM 〃&New Window〃;                 ID_WINDOW_NEW 

        MENUITEM 〃&Cascade〃;                    ID_WINDOW_CASCADE 

        MENUITEM 〃&Tile〃;                       ID_WINDOW_TILE_HORZ 

        MENUITEM 〃&Arrange Icons〃;              ID_WINDOW_ARRANGE 

        MENUITEM 〃S&plit〃;                      ID_WINDOW_SPLIT 

    END 

    POPUP 〃&Help〃 

    BEGIN 

        MENUITEM 〃&About Graph。。。〃;             ID_APP_ABOUT 

    END 

END 



STRINGTABLE PRELOAD DISCARDABLE 

BEGIN 

  IDR_MAINFRAME 〃Graph〃 

  IDR_GRAPHTYPE 〃GraphnGraphnGraphnGraph Files 

                   (*。fig)n。FIGnGraph。DocumentnGraph Document〃 



                                                                                     741 


…………………………………………………………Page 804……………………………………………………………

                    第篇    深入  MFC  程式設計 



                      IDR NEWTYPE 

                         _           〃NewDocnNewDocnNewDocnNewDoc Files 

                                       (*。txt)n。TXTnNewDoc。DocumentnNewDoc Document〃 

                    END 



              新文件的文件读写动作 



                   你大概还没有忘记,第7章最后曾经介绍过,当我们在AppWizard  中选择CEditView  (而 



                   不是CView)作为我们的View 类别基础时,AppWizard 会为我们在CMyDoc::Serialize 



                   函数中放入这样的码: 



                    void CMyDoc::Serialize(CArchive& ar) 

                    { 

                        // CEditView contains an edit control which handles all serialization 

                        ((CEditView*)m_viewList。GetHead())…》SerializeRaw(ar); 

                    } 



                   当你使用CEditView,编辑器窗口所承载的文字是放在Edit 控制组件自己的一个内存 



                   区块中,而不是切割到Document  中。所以,文件的文件读写动作只要调用CEditView 的 



                   SerializeRaw  函数即可。 



                   为了这NewDoc 文件类型能够读写文件,�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!