按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
#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 〃About Scribble〃
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8; 〃MS Sans Serif〃
BEGIN
ICON IDR_MAINFRAME;IDC_STATIC;11;17;20;20
LTEXT 〃Scribble Version 1。0〃;IDC_STATIC;40;10;119;8;SS_NOPREFIX
LTEXT 〃Copyright 251 1996〃;IDC_STATIC;40;25;119;8
DEFPUSHBUTTON 〃OK〃;IDOK;178;7;32;14;WS_GROUP
END
Console 程序的项目管理
MFC AppWizard 会自动帮我们做出一个骨干程序的所有必须文件,建立起一个项目。但
如果你想写一个「血统单纯」的纯粹C++ 程序呢?第1章曾经介绍过所谓的console 程
式。第3章的所有范例程序也都是console 程序。
架构单纯的程序,如果文件只有一两个,直接使用命令列就可以了:
CL xxx。CPP
如果组织架构比较复杂一点,文件有好几个,可以寻求项目管理员的协助。在Visual C++
整合环境中建立一个conole 程序项目的步骤如下:
1。 选按整合环境的【File/New 】,然后选择【Projects 】附页,选按〃Win32 Console
Application〃 ,并填写画面右端的项目名称和位置:
305
…………………………………………………………Page 368……………………………………………………………
第篇 欲善工事先利其器
2。 按下【OK 】钮,回到整合环境主画面,你可以选按【File/New 】并选择【Files 】
附页,然后选按〃C/C++ Header File〃 或〃C++ Source File〃 以开启文件并撰写
程序代码。开启的文件会自动加入此项目中。
306
…………………………………………………………Page 369……………………………………………………………
第4章 Visual C++ 整合性軟體開發環境
3。 你可以选按整合环境的【Project/Setting】菜单项目,从中获得并修改整个项目
的环境设定。我曾经在第1章提过, console 程序必须在编译时指定
/D_CONSOLE 常数,并在联结时指定subsystem:console,这在以下两个画面中
都可以看到(那是项目管理员自动为我们设定好的):