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

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

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




#0139  BEGIN 

#0140      ID_FILE_NEW    〃Create a new documentnNew〃 

#0141      ID_FILE_OPEN   〃Open an existing documentnOpen〃 

#0142      ID_FILE_CLOSE  〃Close the active documentnClose〃 

#0143      ID_FILE_SAVE   〃Save the active documentnSave〃 

#0144          。。。 

#0145  END 



                                                                                     291 


…………………………………………………………Page 354……………………………………………………………

               第篇    欲善工事先利其器 



               好,我曾经说过,这个程序漂亮归漂亮,可什么也没做。我知道MFC  中有一个CEditView 



               类别,具有文字编辑功能,我打算从那里继承我的View              (现在的你还不了解什么是View , 



               没关系)。于是我重来一次,一切都相同,只在AppWizard  的步骤六中设定CScribbleView 



               的【Base class:】为CEditView: 



               这次我获得这样一个程序: 



292 


…………………………………………………………Page 355……………………………………………………………

                                             第4章    Visual C++  整合性軟體開發環境 



天啊,它不但有文字编辑功能,更有令人匪夷所思的打印功能和预视功能,也可以读写 



文字文件。 



体会惊人的生产力了吗? 



 注意:在MFC AppWizard  的步骤6中把CScribbleView 的基础类别由CView 改为 



        CEditView,会造成源代码如下的变化(粗体部份): 



// in ScribbleView。h 

class CScribbleView : public CEditView 

{ 

    。。。 

} 



// in ScribbleView。cpp 

IMPLEMENT_DYNCREATE(CScribbleView; CEditView) 



BEGIN_MESSAGE_MAP(CScribbleView; CEditView) 

    。。。 

    ON_MAND(ID_FILE_PRINT; CEditView::OnFilePrint) 

    ON_MAND(ID_FILE_PRINT_DIRECT; CEditView::OnFilePrint) 

    ON_MAND(ID_FILE_PRINT_PREVIEW; CEditView::OnFilePrintPreview) 

END_MESSAGE_MAP() 

// ScribbleView。cpp 中所有原先为CView 的地方,都被更改为CEditView 



// in ScribbleDoc。cpp 

void CScribbleDoc::Serialize(CArchive& ar) 

{ 

    // CEditView contains an edit control which handles all serialization 

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

} 



                                                                                     293 


…………………………………………………………Page 356……………………………………………………………

             第篇    欲善工事先利其器 



         威力强大的资源编辑器 



             AppWizard 做出来的骨干程序带给我们Windows 程序的标准UI 接口。为了个人需 



             求,你当然会另外加上一些资源,这时候你得准备启用资源编辑工具了。如果你曾经是 



             Visual C++  的使用者,当记得曾有一个名为AppStudio  的多效合一资源编辑工具。是 



             了,但现在不再有AppStudio ,不再有独立的资源编辑工具,而是与Visual C++ 整合环 



             境做了更密切的结合。 



             我将对这个工具提供的各种资源编辑功能逐一简介,并以实例展示如何在应用程序中加 



             入新的资源项目。 



             资源的编辑,虽然与「正统」程序设计扯不上关系,但资源在Windows 程序所占的份 



             量,众所周知。运用这些工具,仍然是你工作中重要的一环。VC++  的Online 手册上有 



             颇为完整的介绍;本章不能取代它们的地位,只是企图给你一个整体概观。以下是出现 



             在InfoView 窗口中的Developer Studio Environment User’s Guide  目录: 



294 


…………………………………………………………Page 357……………………………………………………………

                                 第4章    Visual C++  整合性軟體開發環境 



   打开一个项目后,你可以从其ResourceView 窗口中看到所有的资源。想要编辑哪一个 



   资源,就以鼠标双击之。如果要产生新的资源,整合环境的工具栏上有一整排的按钮等 



   着你按。这个「资源工具栏」是选择性的,你可以按下整合环境的【Tools/Customize】 



   菜单项目,再选择【Toolbar 】附页(或是直接在工具栏区域中按下鼠标右键),从中决 



   定要看到或不看到哪些工具栏。 



   选按其中任何一个纽,立刻会有一个适当的编辑器跳出来向你说哈!  



   当然你可以用PE2 老古董直接编辑RC 档,但整合环境的好处是它会自动处理ID 号 



   码,避免重复的情况发生,新的ID 并会自动放到你的RESOURCE。H 档中。总之就如 



   我说过的,这些工具的目的在使你专注于最主要的工作上,至于各文件间的关联工作, 



   枝枝节节的琐碎事情,都由工具来完成。这,才叫作「整合性」工具环境嘛! 



Icon 编辑器 



   Icon、Cursor、Bitmap 和Toolbar 编辑器使用同一个心脏:它们架构在同一个图形编辑器 



   上,操作大同小异。过去这个心脏曾经遗漏两项重要功能,一是256 色图形支持,一是 



    「敲入文字就出现对应之Bitmap 」工具(这种工具允许使用者将文字直接键入一张 



   bitmap  中,而不是一次一个图素慢慢地描)。自从Visual C++ 4。0 之后这两项重要功能 



   就已经完全补齐了。 



   请注意工具箱(图最右侧)在不同的编辑器中稍有变化。 



                                                            295 


…………………………………………………………Page 358……………………………………………………………

               第篇    欲善工事先利其器 



               选按图左ResourceView 中的一个Icon,于是右侧出现Icon 编辑器。 



           Cursor 编辑器 



               选按图左ResourceView 中的一个Cursor,于是右侧出现Cursor 编辑器。 



296 


…………………………………………………………Page 359……………………………………………………………

                                     第4章    Visual C++  整合性軟體開發環境 



   Bitmap 编辑器 



      选按图左ResourceView 中的一张Bitmap,于是右侧出现Bitmap 编辑器。注意,本图的J。J。Hou 



      字样并非一点一点描绘而成,而是利用绘图工具箱(图最右)中的字形产生器(标有A 字形的那 



      个图标)。它不但能够产生各种字形变化(视你安装的字形种类而定),在中文环境下更能够输入 



      中文字!不过我还没有找到能够调整字形大小的功能。 



工具栏 (Toolbar)编辑器 



      Visual C++ 早期版本没有这个编辑器,因为,工具栏原本不算是RC 档中的一份资源。 



      而且,说穿了工具栏其实只是靠一张由固定大小之格状单元组成的一单张bitmap 构 



      成,编辑工具栏其实就是编辑该张bitmap 。但是那样一来,我们就得自己改写程序代码中 



      有关于工具栏的设定部份,编辑程序显得不够一气呵成! 



      自从Visual C++ 4。0 开始,这中一切琐事就都由工具代劳了。我将在第7章详细解释「工 



      具列」资源如何在程序中发生效用。 



                                                                 297 


…………………………………………………………Page 360……………………………………………………………

               第篇    欲善工事先利其器 



               选按图左ResourceView 中的一份Toolbar,于是右侧出现Toolbar 编辑器。 



                把上图局部放大来看: 



298 


…………………………………………………………Page 361……………………………………………………………

                                                     第4章    Visual C++  整合性軟體開發環境 



VERSIONINFO 资源编辑器 



        VERSIONINFO 可帮助程序判断存在于使用者系统中的文件版本号码,如此一来就不会 



        发生「以旧版本程序改写新格式之文件」的遗憾了。VERSIONINFO 资源也放在RC 档, 



        包含的资料可以识别版本、语言、操作系统、或含有资源之DLL 。AppWizard 会为你产 



        生一份VERSIONINFO 资源, 但不强制你用它。下面是Scribble。rc 档中有关于 



        VERSIONINFO  的内容: 



        #0001  VS_VERSION_INFO     VERSIONINFO 

        #0002    FILEVERSION       1;0;0;1 

        #0003    PRODUCTVERSION    1;0;0;1 

        #0004   FILEFLAGSMASK 0x3fL 

        #0005  #ifdef _DEBUG 

        #0006   FILEFLAGS 0x1L 

        #0007  #else 

        #0008   FILEFLAGS 0x0L 

        #0009  #endif 

        #0010   FILEOS 0x4L 

        #0011   FILETYPE 0x1L 

        #0012   FILESUBTYPE 0x0L 

        #0013  BEGIN 

        #0014          BLOCK 〃StringFileInfo〃 

        #0015          BEGIN 

        #0016          BLOCK 〃040904B0〃 

        #0017              BEGIN 

        #0018                  VALUE 〃panyName〃;     〃0〃 

        #0019                  VALUE 〃FileDescription〃; 〃SCRIBBLE MFC Application0〃 

        #0020                  VALUE 〃FileVersion〃;     〃1; 0; 0; 10〃 

        #0021                  VALUE 〃InternalName〃;    〃SCRIBBLE0〃 

        #0022                  VALUE 〃LegalCopyright〃;  〃Copyright 251 19960〃 

        #0023                  VALUE 〃LegalTrademarks〃; 〃0〃 

        #0024                  VALUE 〃OriginalFilename〃;〃SCRIBBLE。EXE0〃 

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