深入浅出MFC第2版(PDF格式)-第63部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
我说过的,这些工具的目的在使你专注于最主要的工作上,至于各文件间的关联工作,
枝枝节节的琐碎事情,都由工具来完成。这,才叫作「整合性」工具环境嘛!
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……………………………………………………………
第篇 欲善工事先利其器
选按图左ResourceView 中的一套Menu,于是右侧出现Menu 编辑器。
假设我在菜单上添加一份popup 菜单,内有“JJHou” 和“MJChen” 两个项目。不但RC
档的MENU 资源有了变化:
IDR_MYTYPE MENU PRELOAD DISCARDABLE
BEGIN
。。。
POPUP 〃MyFamily〃
BEGIN
MENUITEM 〃JJHou〃; ID_MYFAMILY_JJHOU
MENUITEM 〃MJChen〃; ID_MYFAMILY_MJCHEN
END
END
STRINGTABLE 也多了两个字符串定义,作为状态列消息:
STRINGTABLE DISCARDABLE
BEGIN
ID_MYFAMILY_JJHOU 〃J。J。Hou is a Good man〃
ID_MYFAMILY_MJCHEN 〃M。J。Chen is a Good woman〃
END
此外,RESOURCE。H 也多了两个常数定义:
#define ID_MYFAMILY_JJHOU 32771
#define ID_MYFAMILY_MJCHEN 32772
302
…………………………………………………………Page 365……………………………………………………………
第4章 Visual C++ 整合性軟體開發環境
此外也造成。CLW 档的变化,好让ClassWizard 知悉。ClassWizard 将在稍后介绍。
加速键 (Accelerator)编辑器
AppWizard 已经为骨干程序中的许多标准菜单项目设计了加速键。通常加速键是两个按
键的组合(例如Alt + N ),用以取代鼠标在层层菜单中的拉下、选按动作。所有的加速
键设定都集中在RC 文件的加速键表格中,双击其中任何一个,就会出现加速键编辑器为
你服务。你可以利用它改变加速键的按键组合。
选按图左ResourceView 中的一个Accelerator,于是右侧出现Accelerator 编辑器。你可以直
接在每一个项目上修改内容。
303
…………………………………………………………Page 366……………………………………………………………
第篇 欲善工事先利其器
对话框 (Dialog)编辑器
任何一个由AppWizard 产生出来的骨干程序,都有一个很简单朴素的〃About〃 对话框:
选按图左ResourceView 中的IDD_ABOUTBOX,右侧出现Dialog 编辑器并将About 对话框加载。
图右方有一个工具箱,内有许多控制组件(control ):
你可以在编辑器中任意改变对话框及控制组件的大小和位置,也可以任意拖拉工具箱内
的组件放入对话框中。这些动作最后组成RC 文件中的对话框模板(Dialog template),也
就是对话框外貌的文字描述,像这样:
304
…………………………………………………………Page 367……………………………………………………………
第4章 Visual C++ 整合性軟體開發環境
IDD_ABOUTBOX DIALOG DISCARDABLE 0; 0; 217; 55
CAPTION 〃Abou