友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

深入浅出MFC第2版(PDF格式)-第57部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 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〃;     〃SCRIBBLE Application0〃 

        #0026                  VALUE 〃ProductVersion〃;  〃1; 0; 0; 10〃 

        #0027              END 

        #0028          END 

        #0029          BLOCK 〃VarFileInfo〃 

        #0030          BEGIN 

        #0031              VALUE 〃Translation〃; 0x409; 1200 

        #0032      END 

        #0033  END 



                                                                                              299 


…………………………………………………………Page 362……………………………………………………………

                 第篇    欲善工事先利其器 



                 选按图左ResourceView 中的一份VersionInfo,于是右侧出现VersionInfo 编辑器。你可以直 



                 接在每一个项目上修改字符串内容。 



                         String Table 

           字串表格 (                        )编辑器 



                 字符串表格编辑器非常好用,允许你编辑RC 文件中的字符串资源(STRINGTABLE ),这可 



                 增进国际化的脚步。怎么说?我们可以把程序中出现的所有字符串都集中在RC 文件的字符串 



                表格,日后做中文版、日文版、法文版时只要改变RC 文件的字符串表格即可。噢当然,你 



                还得选一套适当的mon Dialog DLL 。 



                AppWizard 为我们制作骨干程序时不是加了一大套Menu  吗,对应于这些Menu ,有数 



                 以打计的字符串资源,准备给状态列使用。下面是RC 文件字符串表格的一小部份: 



                 STRINGTABLE DISCARDABLE 

                 BEGIN 

                     ID_INDICATOR_EXT   〃EXT〃 

                     ID_INDICATOR_CAPS  〃CAP〃 

                     ID_INDICATOR_NUM   〃NUM〃 

                     ID_INDICATOR_SCRL  〃SCRL〃 

                     ID_INDICATOR_OVR   〃OVR〃 

                     ID_INDICATOR_REC   〃REC〃 

                 END 



300 


…………………………………………………………Page 363……………………………………………………………

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



         STRINGTABLE DISCARDABLE 

         BEGIN 

             ID_FILE_NEW       〃Create a new documentnNew〃 

             ID_FILE_OPEN      〃Open an existing documentnOpen〃 

             ID_FILE_CLOSE     〃Close the active documentnClose〃 

             ID_FILE_SAVE      〃Save the active documentnSave〃 

             ID_FILE_SAVE_AS   〃Save the active document with a new namenSave As〃 

         。。。 



         选按图左ResourceView 中的一个String Table,于是右侧出现String Table 编辑器。你可以直 



         接在每一个字符串上修改内容。 



菜单 (Menu)编辑器 



        菜单编辑器很好用。你可以一边看到正在建立的菜单,一边直接在适当位置键入菜单项 



        目名称, 窗体编辑器会把菜单项目的ID 值(当然是它自动为你产生的) 放到 



        RESOURCE。H  的#define 叙述中,就像字符串表格编辑器所做的那样。重新安排菜单项目 



        的位置也很容易,因为所有动作都可以鼠标拖拉方式完成。 



                                                                                       301 


…………………………………………………………Page 364……
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!