visual prolog v7 · 译者说明 这里译出的内容,取自visual prolog...

215
Visual Prolog V7.3 集成开发环境 (上) 乙丁 译 2012.09

Upload: others

Post on 21-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

Visual Prolog V7.3

集成开发环境 (上)

乙丁 译

2012.09

Page 2: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

译者说明

这里译出的内容,取自 Visual Prolog V7.3 的主要帮助文件 VIP.CHM 中的

Integrated Development Environment (IDE)。

IDE 是 Visual Prolog 程序开发的主要工具,无论是学习 Visaul Prolog 还是应

用 Visual Prolog,都需要了解它、掌握它。Visual Prolog V5.x 的集成开发环境有

过中文的译著。那以后 Visual Prolog 软件本身发生了很大变化,它的集成开发环

境也随之改变了很多,但介绍它的资料除了 VIP.CHM,只见到一些零散在各类

介绍 Visual Prolog 的书中,没有系统性。译者将帮助文件中关于集成开发环境的

内容全部译出,希望对有兴趣学习了解 Visual Prolog 的人们有所帮助。

由于内容较多,所以分了上下册两个部分。分的时候没有按帮助文件中的顺

序,而是把调试器及编译链接等行命令工具相关内容摘在一起放在下册中了。

翻译过程中,得到了 PDC 的 Thomas Linder Puls 先生的耐心帮助,在此向他

表示衷心的感谢。

译者水平有限,错误再所难免,恳请大家批评指正。

乙丁 [email protected]

2012.9

Page 3: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

I

目录 1. 概述...........................................................................................................................................1 2. IDE工程 ....................................................................................................................................2

2.1. IDE工程文件 ............................................................................................................2 2.2. IDE工程 ....................................................................................................................2 2.3. 工程文件用于支持多人编程 ...................................................................................2 2.4. 设置工程组件...........................................................................................................3 2.5. 工程文件用于IDE启动参数 ....................................................................................3

3. IDE 选项 ..................................................................................................................................4 3.1. General(概况)表单 ..............................................................................................4 3.2. Fonts(字模)表单 ..................................................................................................4 3.3. Editor(编辑器)表单.............................................................................................5 3.4. Token Coloring..........................................................................................................7 3.5. Messages Window(消息窗)表单.........................................................................9 3.6. Build(构建)表单 ................................................................................................10 3.7. Debugger(调试器)表单 .....................................................................................11 3.8. Images表单 .............................................................................................................12

4. 工程设置.................................................................................................................................14 4.1. 概况表单(General) ............................................................................................14 4.2. 目录表单(Directories) .......................................................................................16 4.3. 构建选项表单(Build Options) ..........................................................................18 4.4. 版本信息表单(Version Information).................................................................19 4.5. 文件模版表单(File Templates) .........................................................................21 4.6. 运行选项表单(Run Options).............................................................................21

5. 工程窗口与工程树.................................................................................................................22 5.1. 工程树.....................................................................................................................22 5.2. 工程窗口中使用的图标.........................................................................................24 5.3. 工程树详解.............................................................................................................25 5.4. 弹出菜单.................................................................................................................26

6. 多人开发工程的处理.............................................................................................................30 6.1. 概述.........................................................................................................................30 6.2. 文本格式的工程文件.............................................................................................30 6.3. 文本格式的资源描述文件.....................................................................................31 6.4. 在SCS中保存修改..................................................................................................31 6.5. 只读文件的处理.....................................................................................................32 6.6. 自动重载修改后的文件.........................................................................................33 6.7. SCS下的文件安置..................................................................................................33 6.8. 在IDE中使用SCS...................................................................................................34

7. 创建新的工程项.....................................................................................................................35 7.1. 创建新工程.............................................................................................................35 7.2. 创建新包.................................................................................................................35

Page 4: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

II

7.2.1. 概述.................................................................................................................35 7.2.2. 创建新包.........................................................................................................35 7.2.3. 包.....................................................................................................................37

7.2.3.1. 包头文件.........................................................................................37 7.2.3.2. 包实现文件.....................................................................................38

7.3. 创建COM包............................................................................................................39 7.3.1. 引入已有的COM组件....................................................................................39

7.3.1.1. COM技术........................................................................................39 7.3.1.2. 创建新的COM包............................................................................39 7.3.1.3. 选项.................................................................................................40

7.4. 创建新接口.............................................................................................................44 7.5. 创建新的类.............................................................................................................45 7.6. 创建新的文本文件.................................................................................................46 7.7. 创建对话框.............................................................................................................47

7.7.1. 创建新对话框.................................................................................................48 7.7.2. 对话框的属性.................................................................................................49

8. 文本编辑器.............................................................................................................................54 8.1. 获取帮助.................................................................................................................54 8.2. 设置编辑器选项.....................................................................................................54 8.3. 改变当前文本编辑器缺省字模 .............................................................................54 8.4. 文件操作.................................................................................................................54

8.4.1. 创建新的文本文件.........................................................................................55 8.4.2. 打开已有的文本文件.....................................................................................55 8.4.3. 保存编辑后的文本文件 .................................................................................55 8.4.4. 用不同的名字保存文件 .................................................................................56 8.4.5. 整理文本文件中的无用空字符 .....................................................................56 8.4.6. 打印文件.........................................................................................................56

8.5. 编辑文件.................................................................................................................56 8.5.1. 插入文本.........................................................................................................57 8.5.2. 移动光标.........................................................................................................57 8.5.3. 使用书签.........................................................................................................58

8.5.3.1. 设置书签.........................................................................................58 8.5.3.2. 获取书签.........................................................................................58 8.5.3.3. 取消书签.........................................................................................59

8.5.4. 用Go to ...命令定位........................................................................................59 8.5.4.1. Go to Declaration ............................................................................60 8.5.4.2. Go to Definition ..............................................................................60 8.5.4.3. Go To Related Files... ......................................................................60 8.5.4.4. Go to Resource Editor .....................................................................61 8.5.4.5. Go to Line Number .........................................................................61 8.5.4.6. Go to Position on Clipboard............................................................61 8.5.4.7. Go to Selected Error (Warning) Go to Next Error (Warning) Go to Previous Error (Warning) ..............................................................................62

8.5.5. 选择文本.........................................................................................................62

Page 5: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

III

8.5.6. 移动文本.........................................................................................................63 8.5.7. 删除文本.........................................................................................................63 8.5.8. 使用剪贴板.....................................................................................................63 8.5.9. 改变大小写.....................................................................................................64

8.6. 查找文本.................................................................................................................65 8.7. 替换文本.................................................................................................................65 8.8. 在多个文件中查找文本.........................................................................................65 8.9. 查找含有某个子串的Visual Prolog名称 ...............................................................65 8.10. 插入工程已知的名称.............................................................................................65

9. 资源编辑.................................................................................................................................67 9.1. 概述.........................................................................................................................67

9.1.1. GUI风格和VPI风格的资源 ...........................................................................67 9.1.2. 资源的命名.....................................................................................................69 9.1.3. 资源的链接.....................................................................................................69 9.1.4. 位图、图标及光标.........................................................................................69 9.1.5. 对话框资源.....................................................................................................69 9.1.6. 菜单资源.........................................................................................................70 9.1.7. 类型库资源.....................................................................................................70

9.2. IDE设计工具 ..........................................................................................................70 9.2.1. 编辑对话框.....................................................................................................70

9.2.1.1. 控件的类型.....................................................................................71 9.2.1.2. 插入控件.........................................................................................72 9.2.1.3. 控件箱.............................................................................................72 9.2.1.4. 控件的选择与取消选择 .................................................................73 9.2.1.5. 改变控件的大小 .............................................................................74 9.2.1.6. 移动控件.........................................................................................74 9.2.1.7. 控件的对齐.....................................................................................74 9.2.1.8. 编辑GUI控件的属性......................................................................75

9.2.1.8.1. GUI控件通用属性..................................................................76 9.2.1.8.2. 不同类型GUI控件的特殊属性 ..............................................79

9.2.1.9. 编辑VPI控件的属性 ......................................................................91 9.2.1.9.1. Push Button的属性 .................................................................91 9.2.1.9.2. Check Box的属性 ...................................................................93 9.2.1.9.3. Custom控件的属性 ................................................................96 9.2.1.9.4. Radio Button的属性 ...............................................................98 9.2.1.9.5. Static Text的属性 ..................................................................100 9.2.1.9.6. Edit控件的属性 ....................................................................104 9.2.1.9.7. List Box的属性 .....................................................................107 9.2.1.9.8. List Button的属性................................................................. 111 9.2.1.9.9. List Edit的属性 .....................................................................113 9.2.1.9.10. Scroll Bar Attributes..............................................................116 9.2.1.9.11. Group Box的属性 .................................................................118 9.2.1.9.12. Icon控件的属性....................................................................119

9.2.1.10. 对话框调整时用锚点定位GUI控件 ............................................121

Page 6: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

IV

9.2.1.11. Cut,Copy和Paste,Undo和Redo...............................................122 9.2.1.12. Grid ...............................................................................................122 9.2.1.13. Test Mode......................................................................................123 9.2.1.14. Tab Stops .......................................................................................123 9.2.1.15. Visit Order .....................................................................................124 9.2.1.16. Speed Menu...................................................................................124

9.2.2. 创建和编辑窗口...........................................................................................125 9.2.2.1. 创建新窗口...................................................................................125 9.2.2.2. Window Attributes对话框.............................................................127 9.2.2.3. 编辑窗口.......................................................................................130

9.2.3. 创建和编辑表单...........................................................................................130 9.2.3.1. 创建新表单...................................................................................130 9.2.3.2. 表单属性对话框 ...........................................................................132 9.2.3.3. 编辑表单.......................................................................................134

9.3. 工具箱编辑器.......................................................................................................135 9.3.1. 创建工具箱...................................................................................................135

9.3.1.1. 新工具箱对话框 ...........................................................................135 9.3.1.2. Toolbar Attributes对话框..............................................................136

9.3.2. 编辑工具箱...................................................................................................137 9.3.2.1. 控件工具箱...................................................................................138 9.3.2.2. 工具箱中的控件类型 ...................................................................138 9.3.2.3. 工具箱的布局 ...............................................................................139 9.3.2.4. 工具箱控件的属性 .......................................................................139

9.3.2.4.1. 按钮及选择钮的属性 ...........................................................139 9.3.2.4.2. 文本控件的属性 ...................................................................141 9.3.2.4.3. 列表钮的属性 .......................................................................141

9.4. 菜单编辑器...........................................................................................................142 9.4.1. 创建菜单.......................................................................................................142

9.4.1.1. 创建新菜单...................................................................................143 9.4.1.2. 菜单的属性...................................................................................143

9.4.2. 编辑菜单.......................................................................................................144 9.4.2.1. 定制菜单项的属性 .......................................................................145

9.4.2.1.1. 项的标题 ...............................................................................145 9.4.2.1.2. Item Constant ........................................................................146 9.4.2.1.3. Constant Prefix......................................................................146 9.4.2.1.4. Checked.................................................................................146 9.4.2.1.5. Disabled.................................................................................146 9.4.2.1.6. Accelerator ............................................................................146 9.4.2.1.7. Help Constant........................................................................146

9.4.2.2. 编辑Windows的子菜单................................................................147 9.5. 图形编辑器...........................................................................................................147

9.5.1. 概述...............................................................................................................147 9.5.2. 图形编辑器的菜单.......................................................................................148 9.5.3. 创建新图片(位图、光标或图标) ...........................................................148

Page 7: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

V

9.5.3.1. 创建新图片对话框 .......................................................................149 9.5.3.2. 图片属性对话框 ...........................................................................149

9.5.4. 编辑图片属性...............................................................................................151 9.5.5. 图形编辑器窗口...........................................................................................152

9.5.5.1. 图形编辑器标题条 .......................................................................153 9.5.5.2. 图片区域.......................................................................................153 9.5.5.3. 图像屏...........................................................................................153 9.5.5.4. Icon................................................................................................154 9.5.5.5. 移动工具箱(移动、旋转、翻转图片) ...................................154 9.5.5.6. 调色板...........................................................................................155 9.5.5.7. 颜色模式工具箱 ...........................................................................155 9.5.5.8. 绘制与编辑工具箱(使用工具绘制与编辑) ...........................155 9.5.5.9. 绘制与编辑工具 ...........................................................................156 9.5.5.10. Mirror Style对话框 .......................................................................158

9.5.6. 使用工具与颜色...........................................................................................159 9.5.6.1. 设置颜色.......................................................................................159

9.5.6.1.1. 设置绘制与编辑的颜色 .......................................................159 9.5.6.1.2. 设置背景色 ...........................................................................159 9.5.6.1.3. 位图、光标及图标中screen色的使用 .................................160 9.5.6.1.4. 设置(相对于背景的)反转色 ...........................................160 9.5.6.1.5. 位图光标及图标中反转色的使用 .......................................160

9.5.6.2. 理解颜色.......................................................................................160 9.5.6.2.1. 位图中的颜色 .......................................................................160 9.5.6.2.2. 光标中的颜色 .......................................................................161 9.5.6.2.3. 图标中的颜色 .......................................................................161 9.5.6.2.4. 设置光标热点 .......................................................................161

9.5.6.3. 测试光标.......................................................................................162 9.5.6.4. Undo / Redo ..................................................................................162

10. IDE代码工具 ................................................................................................................163 10.1. Dialog and Window Expert ...................................................................................163 10.2. 源浏览器...............................................................................................................167

10.2.1. 概述...............................................................................................................167 10.2.2. 搜索结果.......................................................................................................167 10.2.3. 选项...............................................................................................................168

10.3. Insert命令..............................................................................................................170 11. Make工具......................................................................................................................174

11.1. 概述.......................................................................................................................174 11.2. Build Symbols.......................................................................................................174 11.3. Make Rules ...........................................................................................................175 11.4. Build Script ...........................................................................................................176 11.5. Make Scripts .........................................................................................................177 11.6. Build命令..............................................................................................................177

11.6.1. Build | Compile .............................................................................................177 11.6.2. Build | Build ..................................................................................................177

Page 8: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

VI

11.6.3. Build | Rebuild All.........................................................................................178 11.6.4. Build | Stop Building.....................................................................................178 11.6.5. Build | Execute ..............................................................................................178 11.6.6. Build | Run in Window..................................................................................178

12. IDE中使用其它程序及DLL ........................................................................................179 12.1. 添加对其它程序的调用.......................................................................................179 12.2. 引用某个命令.......................................................................................................179 12.3. 命令行语法...........................................................................................................179 12.4. 在MS Visual Source Safe中Check In文件 ...........................................................181 12.5. 在Vault中Check Out文件 .....................................................................................181

13. Messages和Errors窗口 .................................................................................................184 13.1. Messages窗口 .......................................................................................................184 13.2. Errors (Warnings)窗口 ..........................................................................................184

14. TODO窗口....................................................................................................................186 15. IDE其它一些对话框 ....................................................................................................187

15.1. Warning: These files will be overwritten: .............................................................187 15.2. Resolve Ambiguity................................................................................................187 15.3. Replace Text..........................................................................................................188 15.4. Find Text in Files...................................................................................................190 15.5. Find Text ...............................................................................................................193 15.6. 窗口导航对话框...................................................................................................194 15.7. 发送错误报告给技术支持...................................................................................195

16. Visual Prolog的子目录及示例 .....................................................................................197 16.1. BIN子目录中的文件 ............................................................................................197 16.2. LIB子目录中的文件 ............................................................................................198 16.3. Visual Prolog示例 .................................................................................................199

17. Visual Prolog IDE 快捷键 ...........................................................................................202 18. Visual Prolog应用程序的发布 .....................................................................................205 19. Visual Prolog的限制 .....................................................................................................207

Page 9: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

1

1. 概述

Visual Prolog产品由若干部分构成。其中一个是交互式的集成开发环境

(IDE),它含有文本及各类资源编辑器、代码生成及查看工具(Code Experts),

构建工具(Make facility),等等。IDE还可以使用多种命令行工具:命令行的

Visual Prolog编译器、命令行的Visual Prolog(或Microsoft)的链接器,以

及Visual Prolog帮助文件。

IDE 设计用来方便快捷地开发、测试和修改用 Visual Prolog 编写的应用程

序。它支持使用 Intel 兼容构架处理器的 32 位 MS Windows NT/2000/XP/Vista

等操作系统。

开发一个新工程,由IDE的 Project Settings开始。在这里可以指定该工程

的名称、修改某些缺省的工程参数如 UI Strategy(用户接口策略)类型。而后,

点击OK键就会生成缺省的工程。接着再构建该工程,请注意:尽管这个缺省的工

程并没有提供任何有用的功能,但它可以被构建出来,并且可以执行。

工程构建后,在 Project window中会显示出工程所有文件的树结构。project

tree显示出该工程创建的所有文件及其使用的标准文件。其中还有一些导入的库

文件(如Vip7init.lib)和一些取自于Visual Prolog基础类(PFC)的标准包文

件(使用的标准包文件与选取的UI Strategy类型有关)。

IDE提供了Code Experts、resource editors、文本编辑器、Code Browser

及其它一些很有用的工具,用于方便工程开发。资源编辑器(resource editors)

用于定义、布设和编辑窗口、表单、对话框、IDE控件、菜单、工具箱、图标、

光标和位图等。由这些资源,Code Experts生成所需要的Prolog源代码框架以在

某种表现空间(如一个窗口)中来呈现这些资源。这个框架已是可以编译、链接

和运行的了。

根据编程人员的需要,Code Experts可以把它生成的框架任意部分展现在编

辑窗口中,以供查看和填写应用内容,使这个框架变成一个有用的程序。在IDE

文本编辑器中编辑代码,可以点击鼠标右键,在弹出的多层菜单中使用编辑、选

择、搜索、替换和插入等功能。很多代码都可以用Insert子菜单中的 insert 命

令来精确地生成,它可以插入谓词的模板,无论这谓词是取自PFC包的谓词、用

户定义的谓词、还是处理创建的对话框和窗口的谓词,插入域名、资源标识、VPI

常数、浏览目录获取的文件名、Visual Prolog关键字、颜色,等等。

Page 10: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

2

2. IDE 工程 2.1. IDE 工程文件

在Visual Prolog IDE中生成工程文件,需要使用 Project Settings工具

(Project | New 命令)来创建工程描述文件及其它缺省文件。

工程文件<ProjectName>.PRJ6 是一个文本格式的文件,它包含有全部的编

译器及链接器的设置、工程所有源文件及工程目录的名称和位置、用户接口特性

及许多其它工程设置的描述。也就是说,每个工程文件中有:

• 由Project | Settings工具生成的所有选项的设置(Project Settings)。

这些设置包括工程的 Make Scripts(构建工程时 Make facility需要的信

息),用户接口类型(面向对象的图形用户接口pfc/gui或控制台接口

Console),目标文件类型(可执行文件或DLL)等。

• 在 Project 窗口中注册的所有文件的名称,等等。

2.2. IDE 工程

Visual Prolog工程由 Project Settings(保存在<ProjectName>.PRJ6 工程

文件中)及一组(在Project窗口中注册的)工程源文件构成。它们共同确定了

该工程创建的二进制目标输出文件。IDE使用如下信息创建工程的目标文件:

• 对目标文件的设置。如 Target Type(是应用程序还是动态链接库)、用

户接口策略(面向对象的图形用户接口pfc/gui或是控制台),等等。

• 用于构建指定目标文件的编译器和链接器的 options。

• 该工程使用的 Visual Prolog 源代码文件(包、类及接口)。

• 工程资源( 对话框、窗口、表单、菜单、工具箱、图标、光标及位图)

的描述文件。

• 构建该工程的对象库及其它对象文件。

2.3. 工程文件用于支持多人编程

为支持若干编程人员共同开发同一个工程,Visual Prolog IDE 将大多数工

程文件按文本格式存储:

• 工程设置存储在文本格式的<ProjectName>.PRJ6 工程文件中。

• 各种资源的描述分别存储在独立的文本文件中。

• 缺省时,各 Visual Prolog 的接口、类及类实现也分开存储在文本格式的

文件中。

这种结构的工程文件好处是:(参见多人开发工程的处理):

Page 11: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

3

1. 便于使用源代码控制系统(如 Visual Source Safe)。可以锁定工程文

件,也可以保存更动过的文件的不同版本。

2. 存储在源代码控制系统中的工程文件可以由若干编程人员共享,以支持多

人安全地共同开发同一个工程。文本格式的文件便于融合两个编程人员对

同一个文件所做的修改。

3. 相同的文件可以方便地用于多个工程中。

如果 Tools | Options 菜单中的 Auto Save .PRJ-file immediately after

Adding/Deleting a Resource 选项是有效的(选中),则<ProjectName>.PRJ6

工程文件会在添加或删除了一个文件后立即自动更新。缺省时上述选项是有效

的。

如果一个工程文件是只读的,用户就无法添加或删除资源或模块。此时,

Files | New、Files | Add 及 Edit | Delete 等菜单项是灰色的,不能使用。

2.4. 设置工程组件

1. 利用 File | New、 File | Add 及 Edit | Delete,可以:

• 为工程添加新的组件(对象库(.lib 文件)、包、类、接口、对

话框、窗口、表单、菜单、工具箱、图标、光标及位图);

• 从工程中删除已有的组件;

• 编辑指定的组件(只需要在工程树中双击文件或选择好文件后按

Enter 键)。

2. 利用 Project Settings 工具,可以修改工程的一些全局性设置。

3. 在 Project window 中,可以查看工程所用文件的树,它显示了工程所依

赖及包括的结构。

2.5. 工程文件用于 IDE 启动参数

工程文件名可以作为一个命令行参数用于 VIP.EXE(集成开发环境的可执行

文件)的启动,这会在打开 IDE 时加载给定的工程。双击一个扩展名为.PRJ6 的

文件,也会运行 IDE 并在其中打开这个工程。

Page 12: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

4

3. IDE 选项

Visual Prolog IDE 在其系统注册库中保存了它自身的环境选项。这些选项

可以用选项对话框(Tools | Options)来查看与设置。

3.1. General(概况)表单

在这里可以规定对已经做出的修改如何保存。

Auto Save Every "XX" minutes

勾选此项,IDE 后在每隔指定的分钟数后自动保存工程中所有修改过的文件。

缺省是未勾选。

Auto Save Editors on Close

勾选此项,IDE 在关闭时会不再提问而保存所有修改过的文件。

不勾选时,IDE 关闭时会激活对 Save Contents to Filename 话框以保存修

改了的文件。

缺省是未勾选。

3.2. Fonts(字模)表单

这里规定的是工程及消息/错误窗口的字体及字的大小。

Page 13: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

5

Change Font 按钮

它会调出 Windows 系统的 Font 对话框,用户可以在其中指定相应窗口需

要使用的字模。

3.3. Editor(编辑器)表单

此处可以:

• 为 IDE 文本编辑器对不同扩展名文件做全局文字 Token Coloring 设置;

• 对 IDE 文本编辑器使用的 Font、Tab Size 及 Indent Size 进行全局设置;

• 规定是否对编辑后的文件保留后备文件。

Page 14: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

6

使用上图中 File Extension: 下拉表、Associate with: 下拉表、Apply New

Scheme 按钮和 Change Token Coloring 按钮这四个控件,可以更改 IDE 文本编

辑器缺省使用的文字 tokens coloring 设置。

IDE 文本编辑器对不同扩展名的被编辑文件使用不同的 token coloring 。

编辑器利用这种机制突出显示编辑文件中语言要素。每一套 token coloring 定

义了标记编程语言的语法语义要素的颜色及字模。IDE 支持下表列出的五种

token coloring,它们与文件扩展名的对应关系也列在表中:

缺省关联的配色方案 文件扩展名

Prolog Source Pack、ph、cl、i、dom、pre、con、 pro、

inc

Resource Scripts RC

Module-Definitions DEF

User Defined

Others 所有其它扩展名

为将新的扩展名与这些定义的一种关联起来,需要:

• 在 File Extension 下拉表中选择期望的文件扩展名;

• 在 Associate with 下拉表中选择要关联的 coloring 定义;

• 点击 Apply New Scheme 按钮。

要编辑 Token Coloring 定义:

• 在 Associate with 下拉表中选择相应的 coloring 方案;

• 点击 Change Token Coloring 按钮,出现 Token Coloring 对话框,

在其中可以更改 token coloring 方案中突显语法要素所使用的颜

色及字模。

Default Font 框内有一个 Change Font 按钮。框内显示了 IDE 文本编辑器

缺省使用的字模。用 Change Font 按钮可以调出 Windows 系统的 Font 对话框另

选缺省使用的字模。

Tab Mode 选框下还有 Tab Size 控件及 Indent Size 控件。

Tab Mode

勾选此项,按 Tab 键就会在编辑文本中插入 Tab 字符;不勾选时,按 Tab

键就会在编辑文本中插入在 Indent Size 指定的若干空格。

缺省是未勾选。

Tab Size

Page 15: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

7

这里可以指定用空格数表示的一个制表符占位大小。

Indent Size

这里指定的是 Tab Mode 未勾选情况下,按 Tab 键时用以替代 Tab 字符需

要插入的空格数。

Save without Backup Copy

勾选此项,IDE 保存文件时不会创建备份的副本文件。

缺省是勾选。

Strip Trailing Spaces from Lines when Saving

勾选此项,保存 Visual Prolog 源文件时,IDE 会删除各行尾的空格。

3.4. Token Coloring

Token Coloring 对话框可以更改 IDE 文本编辑器中突显语法要素所使用的

颜色及字模。

在 Options 对话框的 Editor 表单中点击 Change Token Coloring 可以调出

这个对话框。Options 在 Tools 菜单中。

Token Coloring 与 Editor 对话框中的 File Extension、Associate with

及 Apply New Scheme 一道配合使用,可以改变 IDE 文本编辑器缺省 tokens coloring 方案。

文本编辑器可以识别如下 Visual Prolog 语言的语法要素(lexical

tokens):

语法要素 描述

Delimiter 逗号、括弧、冒号、分号、“=”、“<”,等等。

Atom 标识符,其为小写字母开头的字母、数字及下划线的任意组合。

它们不是变量、串,也不是关键字。Atoms可以 用做函子名(Atoms can be functor names)。

Variable Visual Prolog 变量

string 引号包围的串类型常量

bad (对语言来说)非法的字符,合法的语法构造所无法识别的。

Character 单引号包围的任意字符,如'a'。(字符常量)

hexadecimal number 十六进制整数

decimal number 十进制整数

Page 16: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

8

floating-point number 浮点数

octal number 八进制整数

major keyword 不能用于用户定义名称中的 Visual Prolog 关键字,如

predicates、clauses、implement 等。

minor keyword 可以用于用户定义名称中的 Visual Prolog 关键字,如 align、

language,等。

preprocessor

directive

Visual Prolog 预处理程序指令,如#ifdef、#enddef、#include,

等。

document keyword (in

comment)

文档生成工具 ProDoc.exe 在注释中使用的关键字,如: @short、

@detail,等。

comment 注释

space 空格及制表符

parenthesis 圆括号

square brackets 方括号

semicolon 用于分隔子目标的分号.

hyper field 超文本编辑器中的超链接域

selected text 选中的文本

underscored variable 以“_”开头的变量

IDE 文本编辑器支持下面五种 lexical token coloring 方案(编程语言标

记语法要素所使用的颜色及字模)。编辑器载入文件后,会使用与文件扩展名关

联的方案。与文件扩展名缺省关联的方案如下表:

缺省关联的配色方案 文件扩展名

Prolog Source Pack、ph、cl、i、dom、pre、con、 pro、

inc

Resource Scripts RC

Module-Definitions DEF

User Defined

Others 所有其它扩展名

为给方案设定新值,需要:

1. 在 Coloring Scheme 中选择需要的方案, 2. 在 Element 中选择要更改颜色的语法要素, 3. 然后,就可以:

• 勾选(或取消)Default Foreground 和 Default Background 以

使用(或不使用)缺省的前景与背景颜色。在 Foreground 和

Background 框中可以看到它们缺省使用的颜色。

Page 17: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

9

• 点击 Foreground 或 Background 对应的色块调出颜色对话框,选

择期望使用的颜色。

• 在 Font Style 中选择期望使用的字模。

在 Token Coloring 对话框的左下位置 小窗口中,可以

立即观察到所作的更动的效果。关闭对话框后,更改立即生效。

注意:字模属性只对非比例(nonproportional)字模有效。

3.5. Messages Window(消息窗)表单

在这里可以规定消息窗应该如何显示。

Wrap Mode 选框

勾选此项,在 Messages 窗中的文本会由一行自动换到下一行。

缺省是勾选。

Messages Window Keep "XXX" lines

指定 Messages 窗口的 大缓冲行数,这是当前显示的 大行数,可以在窗

口中卷动观察到的行数。

Glue to the Left/Top/Right/Bottom/ Edge 及 Offset "XX" pixels

指定 Messages 窗口(相对于 IDE 任务窗口边界)的位置及大小。

Page 18: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

10

3.6. Build(构建)表单

这里规定的是 Make utility所用的一些构建选项。

MS Linker

指定可选的 Microsoft 链接器的全路径名。

Auto Insert Include

它有三个选项: Never、Prompt、Always。

编译器编译了一个模块(编译单元)后,IDE会读编译器在编译此工程模块

时生成的一个列表文件。若在文件中检测到诸如“Unknown class/interface

'name_Class_Interface' ”的错误,就会查看(由所有已编译过的工程模

块生成的)browse information,看是否有所报告的类或接口。找到了这样

的内容,IDE采取的措施与这里的设置有关:

• Always

在被编译文件的开始处,为引入含有“name_Class_Interface”声明的文件

自动插入#include 指令。接着,在消息窗口发出相应的告警消息,并尝试重

新编译该模块。

• Prompt

IDE 询问是否要为含有“name_Class_Interface”声明的文件插入#include

指令。

Page 19: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

11

• Never

IDE 不会自动插入#include 指令。

3.7. Debugger(调试器)表单

这里规定 Debugger 要显示的检测消息类型。

Show Exception Dialog

不勾选此项,调试器就不会显示 Exception(异常)对话框。

缺省是不勾选。

Show Domains

不勾选此项,调试器就不会在变量前显示域。

缺省是不勾选。

例如,不勾选时,不显示域,变量及事实是如下显示的:

勾选时,要显示域,变量与事实显示出来是这样的:

Page 20: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

12

Show Variable Address

勾选时,调试器会显示变量的地址。

缺省是不勾选。

例如,勾选时,前面例子中的变量显示出来是这样的:

如图,可以看到第一个事实变量存储在地址 0x00BB0F58 中,而第二个存储

在 0x00BB0F5C 中。

Max Displayed Length of Variable Contents "XXX" characters

这里规定串作为变量内容显示出来的 大长度。强烈建议这个值不要超过

4000。

3.8. Images 表单

这里可以指定 IDE 编辑.BMP、.ICO 及.CUR 文件时激活的外部图形编辑器。

Page 21: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

13

BMP

勾选此项,IDE 会运行指定的编辑器编辑.BMP 文件。

ICO check box

勾选此项,IDE 会运行指定的编辑器编辑.ICO 文件。

CUR check box

勾选此项,IDE 会运行指定的编辑器编辑.CUR 文件。

Page 22: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

14

4. 工程设置

Project Settings(工程设置)用于创建新的 Visual Prolog 工程,还可以

用于更动已有工程的某些设置。

选择 Project | Settings 菜单项可以打开 Project Settings 对话框,用

Project | New 创建新工程时也会打开这个对话框。

任何一个 Visual Prolog 程序,仅只是启动起来就需要许多例程的工作。需

要创建大量的启动代码、许多标准的事件处理程序、About 消息框;还需要创建

工程资源、加入一些 PFC 类,等等。实现这些标准的任务可以耗去好几个小时的

时间,就算你很清楚哪些东西是必需的也一样。而 Project Settings 可以自动

完成所有这些操作,利用它不用一分钟就可以创建一个新工程。

4.1. 概况表单(General)

创建新工程,必须要(在 Project Name 中)指定一个工程名称,还要规定

其它一些内容。

填完需要的信息,按OK 键,Project Settings工具就会创建缺省的文件、

定义 build script,等。

注意: 多数 Project Settings 中的选项还可以在以后更动。

Project Name(工程名称)

创建工程时,必须在 Project Name 栏中规定好工程名称。

Page 23: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

15

Project Settings用这个工程名称生成该工程的<ProjectName>.prj6工程

文件。如果在这栏中输入的内容含有不能用于文件名的字符,这样的字符

就会被替换为下划线。该工程名称还被缺省用作存放工程的 Subdirectory

子目录名。

要当心!指定工程名称时:

• 不能将 Visual Prolog 关键字用于工程名称(关键字请参看《语言

参考手册》相关内容)。

• 不能将工程中使用的 PFC 类与接口的名字用于工程名称。

• 不能将 Windows 中的保留字(如 con、null 等)用于工程名称。

Project Kind(工程类型)

设定用户界面的类型及目标程序类型。

选 GUI Appliation,IDE 会生成使用 GUI(图形用户界面)包的用户界面

代码。GUI 包用于面向对象的窗口、对话框及控件等,它提供了一些易用

的工具来开发面向对象的图形用户界面。这个包构建于老的(非面向对象

的)VPI 包之上而又兼容 VPI 包,故此,使用 VPI 策略的老工程或能用新

版的 Visual Prolog 打开。

选 Console Application,IDE 会生成使用 console 包的代码。console 包

支持字符模式的输入/输出界面,不过这样的程序仍然可以使用 GUI 对话

框。

选 DLL,IDE 会生成 DLL 的代码。

Base Directory 和 Subdirectory

要存放工程的目录名,是由 Base Directory 和 Subdirectory 指定的。

Base Directory(基目录)

为工程创建指定其基目录。

可以点击 Browse 键,选择一个合适的基目录。

Subdirectory(子目录)

Page 24: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

16

为工程创建指定(相对于基目录)的子目录,这个目录就是存放该工程的

根目录。

缺省时子目录名就该工程名,但在工程创建时可以更改它。一旦工程创建

后,这栏就成只读的了。

如果打开的是一个已有工程,这栏会显示工程的全路径。

如果打开一个已有一些工程文件的目录作为待创建工程的存放目录,就会有

一个 These files will be overwritten(这些文件将被覆盖)的提示框,显示

出已有的、新工程创建后会覆盖的文件名。因此, 好每个工程放在自己独立的

目录中。

完成必要的信息输入,点击 OK 键后,概况表单会呈现如下样式:

4.2. 目录表单(Directories)

指定工程所使用的各种目录。在这个表单中可以设置工程编译器、链接器、

资源产生器等使用的子目录。

目录名参照了 build script symbols(构建脚本符号)。例如,指定$(ProDir)

时,会自动地使用安装Visual Prolog系统的路径。

确定了所有这些工程子目录后,就可以把工程移动到另一个地方而不需要人

工重新定义 project build scripts(工程构建脚本)。这是因为:

• 通常这些工程子目录是相对于工程基目录定义的,因此移动工程时它们会

自动重新定义。

Page 25: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

17

• 各个子目录是对应于 build script symbols 生成的,而这些构建符号又

在 project build scripts 中定义了文件位置。

Intermediate - $(ObjDir)

这个目录用于存放 IDE 生成的工程中间(暂时)文件。这类文件的扩展名

有.BRO、 .OBJ、 .SYM、 .MAP、 .RC、 .RES、 .DEB、 .Scope 等。清除一个

工程时,这些文件可以删掉(IDE 会自动重新生成这些文件)。这个子目录一般

是工程根目录的 OBJ 子目录。

这个目录定义了构建脚本符号“$(ObjDir)”。

Final - $(ExeDir)

这个目录存放生成的目标模块(可执行文件或 DLL 文件)。这个子目录一般

是工程根目录的 EXE 子目录。

这个目录定义了构建脚本符号“$(ExeDir)”。

Import Library - $(LibDir)

这个目录仅用于工程是 DLL 类型的情况。用于目标 DLL 的输出库会存放在这

里。这个子目录一般是工程根目录的 LIB 子目录。

这个目录定义了构建脚本符号“$(LibDir)”。

Prolog Root - $(ProDir)

这项是只读的,它显示了使用的 Visual Prolog 系统的根目录。

这个目录定义了构建脚本符号“$(ProDir)”。

Include Directories - $(IncDir)

这个表中显示了工程 include 子目录列表。

每行有一个目录,如果指定的文件名不是全路径的(绝对的),则编译器会

在这些目录中查找用编译指令#include 指定的 include 文件。

用一个点表示当前目录,它总是指的该工程目录。用两个点表示当前目录的

上一级目录。

可以用 Browse 按钮把新目录添加到工程的 include 目录中。点击 Browse

按钮会引出 Set New Directory 对话框。使用 Edit 按钮会引出 Edit Include

Directory 对话框。在对话框中可以直接输入路径,用 Up 和 Down 按钮可以改变

目录的顺序。

Page 26: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

18

这个目录定义了脚本符号“$(IncDir)”。

4.3. 构建选项表单(Build Options)

在这里可以编辑工程的 build script Rules及 Build Script,规定Type

Library File等。

Rules

指定如何编译规定扩展名的文件。如:

pack->obj:$(Compiler) /L:R /L:I /L:STAT $(IncDir) /MAXE:200 /MAXW:1000 "$**.pack" /OBJECTFILE:"$(ObjDir)$*.obj" /DEBUGFILE:"$(ObjDir)$*.deb" /debug:full

Rules的更多信息请参看 Make Facility。

Build Script

规定如何构建 终的目标。如:

"$(ProDir)Bin\VIP6Link.exe" -F<< -E_VIPStartUp@0 -d -TPE -SGUI -o"$(ExeDir)$*.exe" -M"$(ObjDir)$*.map" $(PROJECT_OBJ) "$(ObjDir)$*.res" $(PROJECT_LIB)<<

Build Scripts 的更多信息请参看 Make 工具一章以及命令行编译器与命令

行链接器中的内容。

Definition (.def) File [ $(DEF_FILE)]:

module-definition (.DEF) file(模块定义文件)给链接器提供了额外的

输入,它描述了目标应用程序或库的基本特性。

当工程目标是 DLL 或目标文件要使用 DLL 时,要使用普通的模块定义文件。

工程目标是 DLL 时,所有由 DLL 引出的谓词名必须要加入到构建该 DLL 的模

块定义文件的 EXPORT 段。

把引入库包含到工程模块时,相应的 DLL 静态地链接到应用程序。这样的工

程必须有模块定义文件,在该文件的IMPORTS段应指明由DLL引入的所有谓词名。

更多信息可参看命令行链接器中的 Definition Files(定义文件)。

Type Library File

这里可以用 Browse 按钮指定工程中要使用的类型库。一般在创建 COM 对象

时会要用到它。

Page 27: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

19

Manifest File

选中时,会为工程生成 Manifest 文件。

Win32 汇编包含有一个资源集——一组 DLLs、windows 类、COM 服务器、类

型库,或接口——那些总是一道装备应用程序的东西。它们都描述在 Manifest

文件中。 更多细节请参看 MSDN 中关于 Manifest 文件的描述。

4.4. 版本信息表单(Version Information)

这里可以填写工程的一些信息,诸如:公司、作者、版权、文件版本、商标

等。

这里有的信息可以显示在操作系统的文件属性消息框中,还有些可以用于加

载前确认 DLL 或 EXE 的版本。

版本信息有:

Company

一般是该工程版权所有的公司名称。

Author

工程的作者信息。

Copyright

版权信息,这个信息可以显示在文件属性框中。

Description

简要介绍。

File Version

格式是 A.B.C.D,这里的 A、B、C、D都是整数。A是主版本号。

Product Version

格式是 A.B.C.D,这里的 A、B、C、D都是整数。A是主版本号。

Trademarks:

工程的商标信息。

Page 28: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

20

File Flags:

这些是描述工程目标文件的标志:

Debug

该标志表示该工程构建时带有调试信息。

Prerelease

该标志表示目标文件是中间版本。

Patched

该标志表示相对相同版本号的原文件是有修改的。

Special Build

该标志表示目标文件是由标准发布程序构建的,但用于特殊目的。

Private Build

该标志表示目标文件是私用的。

Package Prefix

Package Prefix(包前 )用于类实现:

constants className = "prefix/newPackage/myclass".

前 应当是唯一的。建议用于公司的前 是这样的:

<reverse-DNS-domain>/<company-division>/project/<project-name>

对有(形式如<username>@<provider-site>.<top-domain>)电子邮件的个

人来说,建议使用下面样式的包前 :

<top-domain>/<provider-site>/user/<username> Initial Version

这两栏的信息(Package Prefix 和 Initial Version)会用于自动 className

和 classVersion 常数,谓词 classInfo(className, classVersion)将用到这些

常数。

如果在 Package Prefix 指定了——比如说 visual-prolog,则创建新的类

时 IDE 就会把这个子串作为类名常数的前 。

Page 29: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

21

如果在 Initial Version 指定了——比如说 1.0,则创建新的类时 IDE 就会

把这个子串作为类版本常数的前 。

就是这样:

constants className = "visual-prolog/myNewClass". classVersion = "1.0".

4.5. 文件模版表单(File Templates)

Comment Header

这个文件中的文本将加在 Visual Prolog 创建的每个源文件的头部。

Interface Declaration

这个文件中的文本将加在创建的每个接口声明文件的头部。

Class Declaration

这个文件中的文本将加在创建的每个类声明文件的头部。

Class Implementation

这个文件中的文本将加在创建的每个类实现文件的头部。

4.6. 运行选项表单(Run Options)

Run Arguments

这里可以指定从 IDE 启动目标应用程序时要传递给目标程序的命令行参数。

Executable for Debugger

这里可以指定 IDE 加载的用于调试的可执行文件名。

External Project for Debugger

指定 IDE 进行调试时应当使用的带有调试信息的工程。

Working Directory for Run/Debug

如果设置,用户程序就使用这个目录作为运行/调试时的工作目录;不然就

使用 final 目录。如果设置时使用的是相对目录,则路径会从工程目录算起。

Page 30: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

22

5. 工程窗口与工程树 5.1. 工程树

当在 IDE 中加载一个工程或是创建一个新工程时,就会打开 Project 窗口,

它提供了载入工程概览。窗口由两个部分构成:

• Project Tree 板块。在窗口的左半部,显示了工程树。在这个树状的结

构中可以看到工程中的所有模块。

• 信息板块。在窗口的右半部,显示工程树上选中文件相关信息。内容有:

接口、类及谓词的名称、文件中声明/定义的其它 Visual Prolog 名称等。

工程树中可以看到登录在工程中的文件有:对象库(及类型库)、DLL(动

态链接库)、对象文件、资源描述(对菜单、对话框、窗口、表单、工具箱的描

述)及资源文件(位图、图标、光标)、manifest 文件及 Visual Prolog 包(*.pack)。

工程树示例:一个未编译的 GUI 类型的工程

编译包后,工程树会显示包文件新的相关信息。可以看到包头文件(*.ph)

及 Visual Prolog 的源文件(接口: - *.i、类: - *.cl、类实现: - *.pro)。

窗口右半部可以看到各文件的如下信息:

Page 31: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

23

• 文件中声明的接口和类;

• 文件中实现的类;

• 文件中声明和实现的构造器、类谓词、对象谓词及局部谓词,声明与实现

带元维显示;

• 文件中定义的类与对象事实;

• 文件中定义的域及常数;

• 文件中定义的属性,按流模式显示。

工程树示例:一个已编译的工程

Page 32: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

24

5.2. 工程窗口中使用的图标

在工程窗口中使用了下列图标以标识不同类型的项:

图标 描述

工程树中使用的图标 工程目录

Visual Prolog 根目录,这是 Visual Prolog 系统安装所在的目录

工程子目录

工程源文件

工程文件

包文件

VPCom 包文件

不是包或类型库的工程模块文件。如对象库 *.lib

工程 include 文件。此类文件会包括在一个或多个工程包(模块)中。

依从文件。依从,意味着这个文件修改了,所有依从这个文件的文件

都应重新编译。

Manifest file

工程资源文件

图(位图、光标或图标)文件

菜单描述文件

工具箱描述文件

对话框描述文件

IDE 用户控件描述文件

窗口描述文件

工程窗口右半部使用的图标 编译项

接口定义

类声明

类实现或目标段

常数、域、谓词及事实

常数、域、谓词或事实的组

在工程窗口 View 子菜单中选中组成员时,右半部的浏览信息板块中

就会把在一个文件中声明或定义的所有常数、域、谓词及事实组合在

一起,这个图标就显示在各个组的前面。

事实段。这个图标显示在各已命名的事实段前。一个编译项中所有未

命名事实段合在一起(为一个段)。

公用构造器

私有构造器

Page 33: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

25

公用类谓词

私有类谓词

公用对象谓词

私有对象谓词

公用域

私有域

公用常数

私有常数

类事实或私有类属性

对象事实或私有对象属性

公用类属性

公用对象属性

5.3. 工程树详解

编译链接工程前,要把工程用到的所有源模块用File |New和File | Add命

令登记在工程树中。工程设置会(在创建工程时)自动地把 build script symbols

(参看Make工具一章)所涉及到的标准库、工程用到的PFC包等登录在工程树中。

如果删除了工程需要的某个PFC包,IDE会用#required指令将其恢复。

一开始(包编译前),工程窗口中的工程树只有一些登记了的模块、库及资

源文件的名字。窗口的右半部是空着的。包编译之后,就可以显示出一些新的信

息。在工程树这半边,不仅有包文件的名字,还会有包中所有 Prolog 源文件的

名称;在相关信息这半边会有 Prolog 源文件中声明/定义的 Prolog 实例信息。

双击工程树中的一个 Prolog 源文件名(或选中文件后按 Enter)会将该文

件在文本编辑器中打开,如果这个文件已经打开着,则会激活相应的编辑窗口。

双击资源描述文件(或选中文件后按 Enter)会将该文件在相应的资源编辑器中

打开。

在 图标上点击(或按右箭头键)可以展开树的节点,在 图标上点击(或

按左箭头键)可以收回展开的树结构。

如果在工程树上选中了一个 Prolog 源文件,则在工程窗口中的右半部分会

显示出在这个文件中声明的所有接口与类的名称、实现的类、支持的接口、继承

的接口和类,以及声明/定义的其它 Prolog 实例。通常,每个文件只包含一个接

口或类的声明,只有一个类的实现。

接口、类、类实现的名称前有 或 图标,可以展开或收回这相应的节点。

显示出来的内容与 View | Group Members in Project Window 菜单项有关。

如果选择了该项,树状结构中会显示程序的段(谓词段、事实段、域段、常数段

等),并在 或 图标前再以 图标做前饰。

Page 34: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

26

双击任意 Prolog 的名(谓词、域、常数、事实、类,等等),就会把相应

的文件调入到文本编辑器(如果文件已经打开就是激活相应的编辑器窗口),光

标会定位到该名称的声明/定义上。谓词名称 有其元维,如: 、

可以注意一下:类实体的前 图标中有双冒号,如 ;而对象实体的前 图

标中是单冒号,如 。公用实体的前 图标是有色的,如 ;而私用实体的前

图标是无色的,如 。

5.4. 弹出菜单

工程树窗口中,选择不同的节点后单击鼠标右键,会激活不同的弹出菜单。

工程根节点或文件夹

这个菜单中有:

• New 和 Add 项,对应地可以激活 File | New 和 File | Add 命

令(可以向选择的文件夹添加新的工程项)。

• Delete 从工程中删除这个文件夹。

• Explore 在标准的 Windows 资源管理器中打开文件夹。

• Build Directory 激活 Build | Build 命令编译选定文件夹内的

包。

• Rebuild Directory 激活 Build | Rebuild ALL 命令,这会删除

选定文件夹中所有对象(及其它中间)文件并重新编译文件夹内的

包。

• Optimal Set of Include Directives 这个命令会检查包括文件

结构,进行适当优化。它可以去除不必要的包括指令或添加必需的

包括指令以使所有单元有效。

工程文件

Page 35: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

27

用鼠标右键点击工程文件(*.prj6)会出现如下弹出菜单:

菜单内容:

• Build 命令会激活 Build | Build 命令,对工程进行编译。

• Rebuild All 命令会激活 Build | Rebuild ALL 命令,它会删除

所有对象(及其它中间)文件并编译工程中所有的包。

• Open 打开工程设置对话框。

• Properties... 命令激活工程文件属性窗口。

工程源文件

用鼠标右键点击工程源文件(包括接口文件 - *.i、类文件 - *.cl 及类实

现文件- *.pro )会出现如下弹出菜单:

菜单内容:

• Compile Package 激活 Build | Compile 命令对该文件所在包进

行编译。

• Open 在文本编辑器中打开文件(若文件已经打开则会转到文本编

辑器窗口)。

• Properties 打开文件属性窗口。

包头文件

用鼠标右键点击包头文件(*.ph)会出现如下弹出菜单:

Page 36: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

28

菜单中有:

• Compile Package 激活 Build | Compile 命令编译文件所在的包。

• Open 在文本编辑器中打开文件(若文件已经打开则会转到文本编

辑器窗口)。

• Properties 打开文件属性窗口。

用鼠标右键点击包文件(*. pack )会出现如下弹出菜单:

菜单内容有:

• New 和 Add 命令会相应地激活 File | New 及 File | Add 命令。

• Compile 激活 Build | Compile 命令编译所选的包。

• Open 在文本编辑器中打开文件(若文件已经打开则会转到文本编

辑器窗口)。

• Delete 从工程中删去所选的包。

• Properties 打开文件属性窗口。

依从文件

用鼠标右键点击依从文件 会出现如下弹出菜单:

• Open 在文本编辑器中打开文件(若文件已经打开则会转到文本编

辑器窗口)。

• Delete 从工程中删除该依从文件。

• Properties 打开文件属性窗口。

资源描述文件

Page 37: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

29

用鼠标右键点击资源描述文件(对话框文件 - .dlg、 窗口文件 - .win、 表

单文件 - .frm、 菜单文件 - .mnu、 工具箱文件 - .tb、 位图文件 - .bmp、

图标文件 - .ico 及 光标文件 - .cur)会出现如下弹出菜单:

菜单中有:

• Attribute 打开该资源的 Attributes(属性)对话框。

• Open 在相应的资源编辑器中打开该资源。

• Delete 从工程中删除该资源。

• Code Expert 激活用于此资源的 Dialog and Window Expert(译

注:上图中没有此项,这项仅在某些资源中出现)。

• Properties 打开文件属性窗口。

Prolog 名称

用鼠标右键点击 Visual Prolog 名称(接口、类、类实现或是谓词名、事

实、域及常数)会出现如下弹出菜单:

• Go to Declaration 打开文本编辑器,载入所选的文件并定位到该

名称的声明上。

• Go to Definition 打开文本编辑器,载入所选的文件并定位到该

名称的定义上。

Page 38: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

30

6. 多人开发工程的处理 6.1. 概述

多个编程人员开发同一个工程时,通常会使用如 SourceGear Vault、

Microsoft Visual SourceSafe、INTERSOLV PVCS Version Manager 之类的源代

码控制系统(SCS)。

源代码控制系统是一种程序,用于维护和控制开发源文件的版本。它保存文

件中的每个更动而不仅只是更动后的整个文件,如此一来,在 SCS 中同一文件就

可能有好些个版本。

源代码控制系统允许开发团队中的每个成员都可以用一种安全、系统及协调

一致的方法来对文件获取、修改和恢复原貌。使用它可以 大限度地降低覆盖其

他成员修改过的内容,也不必担心丢失内容,因为所有的修改都很容易访问。

共同开发一个工程的团队使用源代码控件系统的一般方法是:

• 在 SCS 中有源文件的主拷贝供大家使用,

• 各成员有自己源文件的本地复件,

• 如果某人修改了他的本地复件,他应复制修改后的文件到 SCS 的主拷贝,

• 另一方面,所有成员负责由主拷贝更新自己的本地复件确保跟上其他成员

所作的更动。

SCS 有一些机制来同步各成员对同一个文件所做的更动。通常有两种方法:

• 锁定:有成员要更动某个源文件时,他会锁住该文件的更新,使其它成员

不能修改该文件,直到更新完成或是取消。

• 合并:多个成员可以同时修改一个源文件,当某个成员提交自己的修改时

会同时合并其他成员提交的修改。

如果文件是文本格式的,SCS 可以:

• 方便地合并由两个成员同时修改的同一文件的两个不同版本;

• 方便地显示保存在 SCS 中的同一文件两个不同版本的差别。

正是由于这个原因,所以 IDE 使用文本格式的工程文件及源文件。

6.2. 文本格式的工程文件

多人开发同一个工程时,为在SCS中有效处理Visual Prolog IDE project

files,IDE使用了文本格式的工程文件。现在IDE使用的所谓 PRJ6-format工程

文件中包含以下一些内容:

Page 39: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

31

1. 由工程设置对话框规定的工程设置总体描述(工程的Target Type、UI

Strategy,所用的Linker Name,工程的Directories,工程Build Options、

Version Information,等等)。

2. 工程使用的 Visual Prolog 源文件列表。

3. 工程资源文件列表。它们是在 Project窗口中登记的相应于各类工程资源

的资源描述文件(描述对话框、菜单、工具条、图标等)。

4. 工程中使用的目标格式文件列表。它们是以工程模块形式在 Project 窗口

中登记的目标库及目标文件。

5. 其它一些辅助信息。

6.3. 文本格式的资源描述文件

多人开发同一个工程时,为在 SCS 中有效处理资源描述文件,IDE 对每个非

图形资源(窗口、对话框、表单、IDE 控件、菜单、工具条)描述使用了分别存

储的文本格式文件。这样的保存在文本格式文件中的资源描述,有该资源的全部

信息,包括资源属性、布局及用于 Code Expert 的设置。

资源描述文件的缺省名称是所描述资源名称加相应的扩展名:

资源 扩展名

Dialogs .DLG

Windows .WIN

Forms .FRM

IDE controls .CTL

Toolbars .TB

Menus .MNU

Bitmaps .BMP

Icons .ICO

Cursors .CUR

资源描述文件保存在创建它们的那些工程子目录下。

6.4. 在 SCS 中保存修改

这种把工程信息分开保存在一组文件中的方法,对多人编程有以下帮助:

1. 当某个开发人员在工程中添加新资源(或删除其它资源文件)时,IDE 只

需要简单地在工程文件(.PRJ6)插入(或删除)一个相应文件名的文本

行。这样做的好处是:

• 开发人员只有当他在工程窗口注册了一个新工程项或删除了一个

工程项、或是修改了某个工程设置时,才必须更新工程文件。

Page 40: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

32

• 工程文件中的更动,很容易由 SCS 显示出来,因为工程文件是文本

格式文件。

2. 当开发人员编辑某个资源(或源文件)时,只有相应的描述该资源的文件

需要更新,也只有这个文件需要在SCS主拷贝中 Checked In。

3. 要合并由多人同时进行的对不同资源的更动很容易。各人需要将自己修改

的文件 Check In 到 SCS 主拷贝中即可。这之后,所有人员都可以(比如

说,用 Get Latest Version 命令)将自己的本地复件与 SCS 的主拷贝同

步。

注册(或删除)某个资源时,工程文件就被修改了。如果在Options对话框

中勾选了Auto Save .PRJ-file immediately after Adding/Deleting a Resource

这个选项(这是缺省状态),则工程文件(project file)会立即保存。如果资

源的规格文件已经存在,则文件中资源描述的内容就会添加到工程文件中去。如

果文件不存在,就会为该资源生成一个新的资源文件。在工程中注册一个新资源

文件,就会启动相应的资源编辑器。当资源编辑器关闭时,只保存修改过的资源

文件。此时无需更新工程文件

为在安全的条件下方便多人共同项目开发,IDE 提供了如果两个特性:

• IDE 支持对只读模式下的 Visual Prolog 源文件、资源描述文件及工程文

件的特殊处理。

• 工程中使用的已打开文件在本地复件被外部修改时,IDE 支持相应文件的

自动重载。当与 SCS 主拷贝同步时会出现这样的修改,这样的修改是由其

他人员做的。

6.5. 只读文件的处理

当SCS系统使用“锁定”作为同步方式时,通常是将所有没锁定更新的文件

设置为只读模式(由SCS中 Checked Out)。IDE检查加载文件(Visual Prolog

源文件、资源描述文件及工程文件)的只读属性,防止对只读文件进行更改:

• 处理只读的 project (.PRJ6) files:

• 在Project窗口中不允许添加/删除资源或Visual Prolog源文件。

对工程部件的 New、Add 及 Delete 菜单项(按钮)是禁止的(变灰)。

• Project Settings 中的多数选项(除 Run Arguments:外)都是禁

止的(变灰)。

• 处理只读的 Visual Prolog 源文件及资源文件:

• 在编辑器中打开只读文件时,编辑器标题上会提示该文件是在只读

模式下打开的,不允许任何文件修改。

• Code Experts 会禁止所有修改文件的动作。

IDE 获取焦点时,会检查打开文件的只读属性并进行相应的编辑许可设置。

Page 41: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

33

6.6. 自动重载修改后的文件

多人共同开发工程时,开发人员应当周期性地将自己本地复件与 SCS 主拷贝

同步(执行 Get Latest Version 命令),以更新由其他人员进行的修改。

IDE 记下打开文件的时间戳,一得到焦点 IDE 就会将已经打开文件的时间戳

与本地复件文件时间戳比较。如果在同步时有已经打开文件被外部修改了并且时

间戳新于 近记下的时间戳,IDE 就会采取如下步骤:

• 若打开的文件尚未修改,只需要将外部修改过的该文件重新载入编辑器。

• 如果打开的文件已经被修改了,IDE 会就显示对话框询问:是从硬盘文件

中加载外部修改过的文件,还是忽略这个文件,或是载入外部修改过的文

件而将当前编辑的文件保存在另一个文件中。

对工程文件(.PRJ6)出是采取同样的办法。

6.7. SCS 下的文件安置

使用源控制系统时,以下文件需要放置在源控制系统 SCS 知识库主拷贝中:

• 工程文件(<ProjectName>.PRJ6)。

• 扩展名为.PRO、.PACK、.PH、.CL、.I (及以前使用的.dom、.pre、.con

和.inc)的 Prolog 源文件,但不包括 resourceIdentifiers.i 文件,它

是由 IDE 自动生成的。

• 扩展名为.DLG、.MNU、.FRM、.CTL、.WIN、.TB、.CUR、.BMP、.ICO 的资

源文件。

• 外部库和对像文件(比如不是由 IDE 生成的库及对像文件)。

而另一方面,下面这些文件是不应该放进源控制系统主拷贝的:

• resourceIdentifiers.i。它是由 IDE 在每次编译时自动生成的(IDE 通

过使用工程资源来生成此文件)。

• 在 Intermediate(OBJ)、Final(EXE)和 Import Library(LIB)子目

录中由IDE生成的文件。这些文件是对工程进行编译链接时由IDE生成的,

包括有:

• Final 目录中的目标工程文件,是一个可执行文件或 DLL 文件。在

这个目录中还可能有一些标准的 Visual Prolog DLL 文件,它们是

工程设置对话框的 Copy Visual Prolog Runtime DLLs to the

Project Final Directory 选项选中时被复制到这个目录中的。

• 在 Intermediate 目录中的文件有:对象(.OBJ)文件、带有调试

器信息的文件(.DEB)、工程树结构信息文件(.BRO)、浏览信息

文件(.Scope)、图文件(.MAP)、IDE 设置文件(.ENV)、含有

Page 42: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

34

应用程序资源数据的二进制文件、编译器生成的附加信息文件

(Compout.txt)。

• 引入库。在 Import Library 目录中,只有当工程 Target Type 是

DLL 时才会有。

• 备份文件(.BAK)及 IDE 的辅助文件<ProjectName>.GRD。

6.8. 在 IDE 中使用 SCS

可以通过IDE处理SourceGear Vault或Microsoft Visual SourceSafe(或类

似源控制系统)的Check Out及Check In命令。使用Tools | Configure Tools

在IDE中添加了Check Out及Check In命令后,只需要按组合键如Ctrl+1 就可以

对编辑文件执行源控制系统数据库(知识库)的Check In和Check Out命令。如

何在IDE中添加命令请参考“在MS Visual Source Safe中Check In文件” 和 “在Vault中Check Out文件”。

Page 43: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

35

7. 创建新的工程项

7.1. 创建新工程

创建新的工程,使用 Project | New 菜单命令。在接着出现的工程设置对话

框输入或选择期望的设置,再点击 Create 按钮。这时,就会按照设置的缺省参

数创建一个新的工程。

7.2. 创建新包

7.2.1. 概述

在 Visual Prolog v.7 中,代码的基本组织单元是 packages(包)。用包

来组织和构造其它的东西,可以保证不同工程间构造规则的一致性。包定义了工

具构造的标准,使得可以方便地在不同工程间共享源代码。

缺省情况下,IDE 是按包来组织工程的。在工程中创建新的包,IDE 会创建:

• 放置包文件的子目录;

• 包头文件(如 NewPackage.ph),它描述了包的 public 视图。在所有其

它要使用该包的包中,应该用#include 指令插入相应包头文件。包头文

件中含有公用接口、公用类的列表及一些#requires 指令。(公用接口及

类中声明的名称,在包外只要是包括了包头文件的所有地方都可以看到。

#requires 指令的使用保证了这点。)

• 包实现文件(如 NewPackage.pack),它产生 Prolog 的编译单元。对编

译单元编译就会生成目标文件,而目标文件应该链接到使用这个包的工程

中。因此,包实现文件应该用(一次)#include 指令添加到工程中。作

为一个选项,包实现文件也可以放在动态链接库.DLL 文件中(这样的 DLL

可以与相应引入的.LIB 库配合使用)。

7.2.2. 创建新包

要在工程中创建新包,可以用 IDE 菜单命令 File | New。在出现的 Create

Project Item 对话框左边,选 Package,如下图示:

Page 44: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

36

图中的

Name:

填入要创建的包的名称(在上图这个例子中是 NewPackage)。

Parent Directory

在这里可以填入或选择(用 Browse 按钮)包的父目录。包会放置在这个父

目录的子目录中。缺省时,这里显示的是在工程设置中选择的目录。如果这个目

录是工程的一个子目录,则显示的是相对工程根目录的路径。

在这个父目录下,IDE 会按照指定的包名创建一个子目录,包就会放在这个

目录中。

做好所有这些,点击 Create 按钮。IDE 就会创建包的子目录、包头文件

NewPackage.ph 及包实现文件 NewPackage.pack。创建完成,这些文件就会出现

在工程窗口的工程树中。

Page 45: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

37

7.2.3. 包

包用来集合一些相关的接口与类,有些像类库那样的角色。它是替代直接把

所有接口与类放在程序中的一种方法。

包是若干组合起来的接口与类的集合,它为所有这些接口与类提供了某种通

用的名称。包中各个接口或类的声明或实现分别存放在各自的文件中,这些文件

的名称与类和接口的名称相一致。所有的包放在同样分开的包目录中,如果包中

还有子包,则子包会放在包的子目录下。

除开接口与类的声明与实现文件,每个包中还有两个文件:包头文件(.PH)

及包实现文件(.PACK)。

• 包头(package header )文件含有该包所有引出名称的声明。因此,所

有要使用这里面某些名称的包,就应该用#include 指令插入这个包头文

件。

• 包实现(package implementation)文件包类的代码实现。它可以编译成

目标文件以提供由包中外引的谓词/常数的实际实现。因此,使用这个包

的工程只需要插入一次这个包实现文件就可以了。

利用包的概念,可以把相关的接口与类打成包。一旦如此,使用时就只需要

插入已经创建好的包而不用把包拷贝到各个工程中去。

下面详细介绍包的头文件和实现文件。

7.2.3.1. 包头文件

包头文件提供了包的外观。

• 它为由包中外引的所有接口(.i 文件)及类(.cl 文件)的声明文

件(公用接口与类)提供了#include 指令支持。

• 它含有#include 指令,插入了在包中引用的所有公用包的包头文

件。因为这些包头文件提供了所有它们声明的公用名称,所以在这

个包里这些名称也是可见的。

• 它含有一些#requires 指令,定义了要使用这个包必须使某些包的

实现(已编译的代码)可访问。

因此,包头文件提供了该包所有外引名称的声明,这不仅有该包自身声明的

外引名称,还包括有插入到该包头文件的其它包声明的所有名称。

包头文件应该用#include 指令插入到所有要看到该包外引公用名称的地

方。

Page 46: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

38

包头文件不会生成任何编译代码,它只是在编译时用来从包中外引声明的名

称。

下面是一个包头文件的例子:

#requires @"TaskWindow\TaskWindow.pack" % publicly used packages #include @"pfc\core.ph" #include @"pfc\vpi\vpi.ph" % exported interfaces #include @"TaskWindow\TaskWindow.i" % exported classes #include @"TaskWindow\TaskWindow.cl"

通常,包头文件名形如: PackageName.ph。

7.2.3.2. 包实现文件

包实现文件提供了包中声明类的代码实现。编译包实现文件就生成了目标代

码(目标文件),也就是包中所声明类的实际实现。这个目标文件提供了包中外

引的所有公用谓词及常数的实现。

• 它含有该包包头文件的#include 指令。

• 它为该包私有使用的外部包的包头文件提供#include 指令。这些

包头文件提供了包实现(.pro)文件用到的所有外部名称的声明。

• 它为该包私有使用的接口(.i 文件)提供#include 指令。这些接

口只在包实现中使用,外部看不到。

• 它为该包私有使用的类声明(.cl 文件)提供#include 指令。这些

类只在包实现中使用,外部看不到。

• 它为所有类实现(.pro 文件)提供#include 指令,这些类实现文

件提供了包中声明的所有类的 Prolog 代码实现。

通常,每个包实现文件就是一个 Prolog 编译单元,生成一个实际的目标文

件,而目标文件要添加到工程模块中。

作为选项,包实现也可以放在 DLL 文件中。库(.LIB)文件可以从这样的

DLL 中引入公用名称。

下面是包实现文件的一个例子:

#include @"TaskWindow\TaskWindow.ph" % privately used packages #include @"dialogwithcontrols\dialogwithcontrols.ph" #include @"pfc\vpi\vpimessage\vpimessage.ph" #include @"pfc\exception\exception.ph" #include @"TaskWindow\Toolbar\Toolbars.ph"

Page 47: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

39

% private interfaces #include @"resourceIdentifiers.i" % private classes % implementations #include @"TaskWindow\TaskWindow.pro"

通常,包实现文件名形如: PackageName.pack。

7.3. 创建 COM 包

7.3.1. 引入已有的 COM 组件

7.3.1.1. COM 技术

组件对象模型(Component Object Model)是软件组件相互通信的一种方法。

它是一种二进制标准,可以使两个组件相互通信而不管它们在什么样的机器上运

行(只要机器是连接在一起的),不管机器是什么操作系统(只要支持 COM),

也不管组件是用什么语言编写的。COM 提供了本地透明:组件是 DLL 还是 EXE 都

没关系。COM 组件是二进制代码单元,其中包括了创建 COM 对象的打包与注册代

码。在这种模型中,每个 COM 组件其程序结构对数据与功能都进行了封装,是作

为一个单一的单元进行定义与分配的,对 COM 数据和功能的公用访问只能经由编

程接口。

每个 COM 只是个程序模块,一个 DLL 或一个 EXE 文件。 其中可以含有一个

或多个 COM 组件(在 Microsoft MSDN 技术中组件是协同类)。每个组件有若干

个接口(MSDN 技术中各组件可以支持数个接口),而且支持缺省的接口 iUnknown。

经该接口使用 iUnknown::queryInterface/2->谓词,可以得到一个组件所有的

接口。每个接口提供有若干谓词(方法)。

在工程中引入 COM 组件的主要目的,是使用由 COM 组件定义的谓词。故此,

才有了COM包用于引入的COM组件,为由COM组件实现的方法来提供某种包装(胶

合代码)。也就是说,生成的 COM 包必须提供相关接口、谓词及域的声明。

7.3.1.2. 创建新的 COM 包

为创建给某个 COM 组件提供接口(包装)的 COM 包,需要使用 IDE 的 File |

New 命令。接着,在打开的创建工程项对话框的左边,选 COM Package,如下图

示:

Page 48: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

40

创建新 COM 包对话框

填好 COM 包需要的设置后,点击 Create 按钮。IDE 会创建包的子目录、包

头文件和包实现文件(对上图来说是分别是 XML.ph 和 XML.pack),创建完成后

它们就会出现在工程窗口的工程树中。

7.3.1.3. 选项

Name:

在这里填写要创建的 COM 包名称(如上图中的 xml)。

Parent Directory

在这填写或选择包的父目录,创建的包会放在这里指定目录的子目录下。如

果指定的目录不存在,就会创建所要求的目录。缺省时,这里显示的是打开这个

对话框时在工程树上所选择的目录,如果这个目录是工程子目录之一,显示的是

工程根目录的相对路径。如果这里空里不填,则等于选择了工程根目录。

在指定的父目录下,IDE 会用包的名称创建一个子目录(对上图的情况是就

XML 子目录),包就放在这个子目录里。

Page 49: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

41

Source 组框

这组选项用于指定组件应由哪个 COM 模块(DLL 或 EXE)引入。这些选项是:

Type Library

选该项时,需要在后面的编辑控件中指定含有描述 COM 组件的类型库文件。

按 Load 按钮,会打开 Load Type Library File 对话框,可以在这个对话框中查

找和选取需要的类型库文件。

注意!即便是直接输入类型库文件名,也必须按 Load 按钮以强制 IDE 由指定的

类型库加载该 COM 的相关信息。

如果 COM 客户(也就是引入 COM 服务器组件的程序)需要使用 COM 服务器的

谓词,这个客户应用程序就必须要知道 COM 服务器组件中谓词的信息。很多谓词

还返回值并接受参数,COM 客户要使用这样的谓词还需要了解谓词的声明(及

域)。这些信息可以有多种方法来获取,Microsoft 推荐的方式是创建一个类型

库(注意:类型库并不提供 Prolog 的声明)。类型库信息可以存放在下列扩展

名的文件中:.TLB (类型库自身)、.OLB (多重类型库或外部对象库)、.DLL

(COM DLL 文件可以嵌入类型库资源)、.EXE (COM EXE 文件也可以嵌入类型库资

源)、.OCX (ActiveX 控件)。

TypeLib ID

选该项时,需要在后面的编辑框中输入要引入的 COM 组件类型库的 TypeLib

ID,它是一个在系统注册表中注册该类型库的通用唯一性标识。(更多内容请参

见 CLSID)。它是十六进制数串,其格式如下:

{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

同样,指定完后必须按 Load 按钮以强制 IDE 由指定 TypeLib ID 注册的类型

库加载 COM 信息。

系统注册表中,可以在 HKEY_CLASSES_ROOT\TypeLib = {TypeLib ID}条目

下看到所有注册的 TypeLib ID。

CLSID

选这个项,需要在后面的编辑框中输入要引入的 COM 组件的 CLSID,它也是

一个十六进制数串,格式如下:

{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

同样也必须按 Load 按钮,以强制 IDE 由嵌有 CLSID 指定的 COM 组件的 COM

模块加载 COM 信息。

Page 50: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

42

注意,一个 COM 模块中可以嵌有若干个 COM 组件。如果想要引入其中的某一

个,只需要指定在这个 COM 模块中任意 COM 组件所注册的 CLSID。稍后,可以在

Import 组框中指定所需要的 COM 组件(或接口)。

按 MSDN 术语说,CLSID 是一个类标识。在 Visual Prolog PFC(参见 PFC

的 COM 包中的描述)的术语中,CLSID 是一个 COM 组件标识。

CLSID 是标明 COM 组件类型的通用唯一性标识。每个 COM 组件在 Windows 系

统注册表中都有自己的 CLSID,以便其它应用程序加载和使用。例如,电子数据

表软件可以创建工作表组件、图表组件及 macrosheet 组件,所有这些组件都有

自己唯一的 CLSID。因此,如果 COM 模块(也就是 COM 服务器或 COM 容器)允许

链接其嵌入的组件,就必须为每个这样嵌入的 COM 组件注册特定的 CLSID。

CLSID 存放在系统注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID =

{CLSID}注册键下。

CLSID 是用花括号包围的 128bit 数(用十六进制表示)。通常用下面的十

六进制数串的格式表示 CLSID(及其它一些通用唯一标识):

{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

例如:

{4208fb66-e22a-11d1-a7d7-00a0c982c00d}

可以用 UUIDGEN.exe 工具创建新的通用唯一标识。

查找 CLSID 时还可以在下面的注册子键下找到与之相关的 PROGID:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID}\ProgID = <programatic identifier>

参见下面的 PROGID 选项介绍。

Universally unique identifier (UUID,通用唯一标识)

通用唯一标识 UUID 也称为全局唯一标识(globally unique identifier ,

GUID)。UUID 或是 GUID,是一个唯一的标识对象用的 128 比特的数。而这里的

对象,可以是 OLE 服务器,接口,客户对象,等等。从此刻起,各种对象就是用

UUID 来辨识了。

PROGID

选此项时,要在后面的编辑框中指定需要引入的 COM 组件所在 COM 模块的

PROGID。PROGID 应按如下格式给出:

<Program>.<Component>.<Version>

Page 51: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

43

单词之间用“点”分隔,如 Word.Document.6(不能用空格)。

必须按 Load 按钮,以强制 IDE 由 PROGID 注册的 COM 模块中加载 COM 信息。

PROGID 是带有版本号的程序标识,它给出的是人可阅读的标识 COM 组件的

类标识(CLSID)。PROGID 是可以与 CLSID 联系起来的注册项 。与 CLSID 一样,

PROGID 可以标识一个 COM 组件,但没有前者那么精确,因为它不保证全局唯一

性。 后的版本(Version)部分是可选的,但哪怕是只有一个版本也强烈建议

使用它,这可以避免某些冲突。它还允许有不同版本的组件同时存在而不会引起

PROGID 重复。如果不指定它,缺省值是 Version = 1。

注册表中如何查找 PROGID 项在 CLSID 中有介绍。

IID

选此项时,要在后面的编辑框中输入要引入的 COM 组件接口的 IID。

IID是特定COM接口的通用唯一标识。它应该按如下格式用十六进制数指定:

{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

必须按 Load 按钮,以强制 IDE 由含有这个 IID 指定接口的 COM 模块中加载

COM 信息。

可以指定含有要引入接口同一个 COM 模块中的任何一个接口的 IID,以后可

以在 Import 组框中再指定所需要的 COM 组件(或接口)。

可以在下面的系统注册表条目中找到所有注册的 IID:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface

Import 组框

这是用来指定要引入的 COM 组件或接口的。它有两项:

Components:

Interfaces:

这两个选项规定要引入组件(Component)还是接口(Interface)。

指定了正确的 COM 模块名称或标识后点击 Load 按钮,该 COM 模块中含有的

COM 组件及接口信息就会加载到 IDE 中。然后,这些 COM 组件及接口列表就会出

现在 Import 组框的右半部。

如果选中 Interfaces,列表中显示的就是所含有的接口名称。可以在其中

选择需要的一个或多个接口引入到待创建 COM 包中。

Page 52: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

44

如果选中 Components,列表中显示的就是所含有的组件名称。可以在其中

选择需要的一个或多个组件引入到待创建 COM 包中。

要做多项选择时,可以:

• 按住 Shift 键然后按上、下箭头或上下翻页或 Home、End 键作选择。

• 按住 Shift 键然后用鼠标左键点击首项,接着再点击 后项(首项和 后

项之间的项就会全部选中)。

• 按住 Ctrl 键然后用鼠标左键点击需要选择的项。

As ActiveX

选此项时,在 Components 列表中选择的组件将按 ActiveX 控件引入。只有

选了 Components 选项时这个选项才会有效。

Interpret " short* " as "string"

该项选中时,所有在 C类型库中声明的对 short 类型的指针(short*)均会被

声明为属于 Prolog 接口中的串(string)域。不选此项,则缺省声明为单项的

复合域,带一个 16 比特的参数。这样的域是按指向一个 16 比特元素的指针来处

理的。

7.4. 创建新接口

接口定义规定了命名对象的类型。在一个接口中声明的所有谓词,是该接口

类型对象的对象成员。

Page 53: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

45

要创建新接口并将其加入到工程中已经注册的包中,用 File | New 。在打

开的 Create Project Item 对话框左边,选 Interface,如上图示。

Name:

在 Name 编辑框中输入接口的名称(上图中接口的名称是 interfaceName)。

Package:

在下面的 Existing Package 下拉表中,选择已在工程中注册过的包(上图

中是 NewPackage.pack)。创建的接口将包括在选择的这个包中,而创建的带有

接口缺省声明的文件会放在所选包的子目录下。这个子目录名会显示在所选包名

之后(如上图的 NewPackage\)。

填好需要的设置后按 Create 按钮。IDE 创建该接口定义文件(编译包后这

个文件会显示在工程窗口的工程树中),并在指定包的包头文件(上面的例子中

是 NewPackage.PH)中插入#include @"NewPackage\interfaceName.i"指令:

% exported interfaces #include @"NewPackage\interfaceName.i"

由于所有要用这个包的地方都要插入#include @"NewPackage.ph"指令,所

以所有这些地方也都能看到#include @"NewPackage\interfaceName.i"这个指

令。这也就意味着:interfaceName 接口是公用的(public)。

如果想要创建一个 NewPackage 包私有的接口,可以手工将该接口的包括指

令移动到包实现文件 NewPackage.PACK 中去:

% private interfaces #include @"NewPackage\interfaceName.i"

这样一来,该接口声明在包实现文件之外是不可见的,这个接口也就是包实

现文件私有的(private)了。

注意,新接口的有关信息要在含有这个接口的包编译过后才能浏览得到。

7.5. 创建新的类

类声明规定了类的外在表现。外界只能看到和使用在类声明中说明的那些常

数、域、谓词等。如果类申明一个接口为其构造类型,则该类就可以构造这样类

型的对象。类声明中所说的都属于这个类,而不是属于这个类所构造出来的对象。

任何类声明必须有与之相伴的类实现;类声明中声明的谓词,其定义必须由类实

现提供。

要创建新的类并将其加入到工程中已经注册的包中,用 File | New 。在打

开的 Create Project Item 对话框左边,选 Class,如下图示:

Page 54: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

46

Name:

在 Name 编辑框内输入类的名称(如上图中的 newClassName)。

Package:

在 Package 框中,可以选择一个已经在工程中注册过的包(如上图中的包

NewPackage.pack)。 创建的类将会包含在这个包中,而该类创建的文件会放在

包的子目录里。这个子目录的名称显示在包名之后,如上图中的(NewPackage\)。

In namespace

In namespace 这个选项控制是否要把创建的类放入名称空间中(如上图的

namespace1\newClassName)。通过这种控制可以在同一程序若干不同名称空间

中声明/定义相同名称的接口/类。

填好需要的内容后,点击 Create 按钮,IDE 将创建类声明(如果选了 Create

Interface,则还有类实现)文件。编译包后,这些文件会显示在工程窗口的工

程树中,还会在相应的包头或包实现文件中插入#include

@"NewPackage\newClassName.cl"指令。

注意,新类的相关信息要在类编译过后才会出现。要编译新的类,可以对含

有这个类的包执行 Compile 命令。

7.6. 创建新的文本文件

Page 55: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

47

要在工程中创建新的文本文件,使用 File | New 命令。在随后出现的对话

框左边选 Text File,如下图:

Name:

在 Name 编辑框中输入文本文件的名字(如上图中的 TextModule.pack)。

注意,如果不输入文件的扩展名,就会自动使用缺省的.TXT。

Parent Directory

在 Parent Directory 栏中可以输入或(点击 Browse 按钮)选择要创建的文

本文件的父目录,文件将放在这个目录中。

Add to Project as Module

如果选择此项,创建的文本文件会出现在工程窗口的工程树中。

注意,这个选项相当灵巧,它的动作与文件扩展名相关。若用.PACK作扩展

名,比如TextModule.pack,IDE会知道创建的文件是一个真实的工程模块(是个

可编译单元),并且将在工程的 make scripts中添加相应的命令编译它,得到

的对象(.OBJ)文件工程链接时也会用到。

如果不选此项,创建的文本文件就不会出现在工程树中,也不会注册为一个

工程模块。

填好了需要的设置后,点击 Create 按钮。

7.7. 创建对话框

Page 56: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

48

7.7.1. 创建新对话框

要在工程中创建并注册一个新的对话框,可以使用 File | New 命令。在打

开的 Create Project Item 对话框左边,选 Dialog 项,如下图示:

Name

Name 栏输入的名称,在自动生成代码时会与这个对话框相关联。这个名称

必须使用正确的 Visual Prolog 名称,它应当是以字母开头的字母、数字及下划

线的序列。这个名称用于生成处理这个对话框的文件的名称,这些文件会显示在

工程窗口的工程树中。代码专家系统(Code Expert)使用这个名称来命名处理

这个对话框的谓词。

Package

需要在 New Package 和 Existing Package 两者间选择一项,以决定是把该

对话框相关产生的资源文件、接口及类等放在新的一个包中,还是放在一个已有

的包中。

如果选 New Package,还需要在 Parent Directory 栏中输入目录名(如上

图中的 TaskWindow\)。包及对话框处理文件创建后将会放在这个目录里。

如果选 Existing Package,就可以在其后的列表栏中选择一个工程已知的

包(如上图中的 TaskWindow.pack)。对话框处理文件创建后将会包括在这个包

Page 57: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

49

中,而创建的文件也会放在该包的子目录里。这个子目录的名称会显示在包名之

后,如上图的(TaskWindow\)。

完成之后,点击 Create 按钮,将会出现属性对话框。

7.7.2. 对话框的属性

如果是 GUI 风格的工程(Object-oriented GUI (pfc/gui) UI Strategy)

创建的对话框属性将是下图这样的:

如果是 VPI 风格的工程(Conventional GUI (pfc/vpi) UI Strategy)则

如下图:

Page 58: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

50

下面介绍对话框中的这些属性:

Title

在运行时这个文本会显示为对话框窗口的标题。如果 Titlebar 属性被设为

false,或 Titlebar 选框没有勾选,这里的内容就无所谓了。

Dialog Type

GUI 风格对话框的这个属性,可设为 Modal 或 Modeless。

VPI 风格对话框的这个属性是一个组框,有 Modal 及 Modeless 两个选项。

如果选 Modal,创建的对话框在运行时除非关闭了这个对话框否则将不能再

打开其它的窗口或对话框。

如果选 Modeless,创建的对话框在运行时不会阻止再打开其它窗口或对话

框。

Style Flags

这些 GUI 风格对话框的属性设置或 VPI 风格对话框的组选项,用于控制待创

建对话框的外观。如果某项设置为 true 或某选框被勾选,相应的属性就赋予给

该对话框(对 VPI 对话框来说,相应的窗口形式标志常数将会添加到该对话框描

述中)。

Page 59: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

51

Titlebar

这个属性设为 true 或被勾选时,创建的对话框会有一个标题条。对 VPI 风

格对话框来说,会设置 vpiDomains::wsf_TitleBar 标志。

CloseBox

这个属性设为 true 或被勾选时,创建的对话框会有一个“关闭”按钮。对

VPI 风格对话框来说,会设置 vpiDomains::wsf_Close 标志。

MaximizeBox

在对话框窗口的标题条上创建一个“ 大化”按钮。对 VPI 风格对话框来说,

会设置 vpiDomains::wsf_Maximize 标志。

MinimizeBox

在对话框窗口的标题条上创建一个“ 小化”按钮。对 VPI 风格对话框来说,

会设置 vpiDomains::wsf_Minimize 标志。

Invisible

对话框第一次被打开时是不可见的。对 VPI 风格对话框来说,会设置

vpiDomains::wsf_Invisible 标志。

注意,对 modal 的对话框即便设置了这个选项,它一开始也还是可见的。对

VPI风格对话框来说,编程人员可以使用下面的调用来使modal的对话框不可见:

window::setState([vpiDomains::wsf_Invisible,...]) 或

vpi::winSetState(_,[vpiDomains::wsf_Invisible,...]) 。

Disabled

对话框第一次打开时显示为禁止的(灰色的)。对 VPI 风格对话框来说,会

设置 vpiDomains::wsf_Disabled 标志。

ClipSiblings

如果两个对话框有同一个父窗口,应当重叠显示。对 VPI 风格对话框来说,

会设置 vpiDomains::wsf_ClipSiblings 标志。

ClipChildren

画子窗口应当重叠显示。对 VPI 风格对话框来说,会设置

vpiDomains::wsf_ClipChildren 标志。

HorizScrollbar

Page 60: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

52

这个属性设为 true 或被勾选时,创建的对话框会有一个水平滚动条。对 VPI

风格对话框来说,会设置 vpiDomains::wsf_HScroll 标志。

VertScrollbar

这个属性设为 true 或被勾选时,创建的对话框会有一个垂直滚动条。对 VPI

风格对话框来说,会设置 vpiDomains::wsf_VScroll 标志。

ChildDialog

创建的对话框如同子窗口。这意思是指:

• 对话框窗口限制在父窗口之内;

• 对话框窗口可以部分或全部被其它重叠窗口所遮盖;

• 是 MDI 模式的。如果对话框的父窗口是任务窗口,则该对话框窗口一开始

时(通常)是隐藏的(被其它窗口遮蔽)。

如果设置或勾选了 Modal 属性,这个属性将是不可用的。

对 VPI 风格的对话框来说,会 vpiDomains::wsf_ChildDialog 设置标志。

SizeBorder

这个属性设为 true 或被勾选时,创建的对话框会是双线边的(可以改变对

话框的大小)。对 VPI 风格对话框来说,会设置 vpiDomains::wsf_SizeBorder

标志。

Position Size

这两项属性决定对话框的位置与大小。坐标使用对话框基本单位,X向的一

单位等于四分之一对话框基本单位宽;Y向的一单位等于八分之一对话框基本单

位高;而对话框基本单位则是由系统字模的高与宽计算得到。

Code

只有 VPI 风格的对话框有该属性。在这组选框中编程人员可以确定如何在程

序源码中处理对话框。

Custom ID

只有 VPI 风格的工程(Conventional GUI (pfc/vpi) UI Strategy)这个

选项才可用。

勾选该项,下面的编辑栏才可用。在这栏中可以根据需要改变对话框缺省的

资源标识(如上图中的 idd_mydialog)。

Page 61: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

53

Class Name

这是只读的,可以在这里看到含有 IDE 自动生成的处理该对话框的代码的接

口(及类)的名称。

Code Expert

这个按钮可以打开 Dialog and Window Expert。首次打开 Dialog Attributes

对话框时,这个按钮是不可用的。

Update Code

点击这个按钮,会立即更新由 IDE 维护的该对话框处理代码;相应文件将加

载到文本编辑器中,光标置于自动处理代码的起始处。

Font

这个选项可以选择对话框所用字模的属性。勾选 Set Dialog Font 后,可以

用 Font 按钮打开标准字模对话框选择需要的字模。注意,编辑对话框时被选的

字模是看不见的,不过可以用 Resource | Test Mode 命令来查看对话框会是什

么样。对话框基本单位(Dialog Base Unit)的大小是由操作系统按字模尺度规

定的,但要注意位图和图标不受它的影响。要当心,不要使用在应用程序布署环

境中不存在的字模。

完成所有设置后,可以点击 OK 按钮,在当前工程中创建这个新的对话框。

对 VPI 风格的对话框来说,随时可用 Resource | Attributes...任务菜单

命令或弹出菜单中的 Attributes...项激活 Dialog Properties/Attributes 对

话框,修改待创建对话框的属性。而对于 GUI 风格的对话框,在设计工作模式下

属性面板总是打开的。

编译了含有待创建对话框的包后,工程树中就会显示出处理该对话框的那些

文件(接口、类及类实现)。

Page 62: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

54

8. 文本编辑器

Visual Prolog 的文本编辑器(Text Editor)可以创建和编辑任意 UNICODE

和 DOS 字符集的文本文件。但它主要还是用于编辑来自 IDE 的 Visual Prolog

源代码文件,它能用各种颜色标识 Visual Prolog 语言元素(关键字、变量等等)。

在 IDE 中使用文本编辑器时,它还支持一些 Visual Prolog 特有的功能,如:Go

to Name Declaration, Go to Name Definition, Insert Interface, Insert

Class, Insert Predicate,等等。

在 IDE 中,可以同时打开多个文本编辑器窗口编辑多个文本文件。

文本编辑器支持:undo/redo(标准的限制是 512 步)、search、replace、

改变大小写、cut、copy 和 paste 等操作的,支持鼠标拖拽块。

编程人员可以利用 vpiEditor::create/12->、

vpiEditor::createHyper/13->等 VPI 谓词在应用程序中创建文本编辑器。

大多数常用的文本编辑命令有快捷键,也可以用鼠标右键弹出关联菜单。

8.1. 获取帮助

当文本编辑器窗口激活输入时,按 F1 键(或点击工具箱上的 图标,或使

用 Help | Visual Prolog Help 命令)可以得到相关帮助。

8.2. 设置编辑器选项

大多数编辑器的选项集中在IDE选项对话框的 Editor标签中。在这里可以设

置的有:

• Token Coloring – 用于标识语言元素(tokens)的背景/前景颜色及字

模属性。

• 制表模式、缺省制表及缩进量值。

• 缺省的字模等。

8.3. 改变当前文本编辑器缺省字模

可以用 View | Change Font 或弹出菜单中的 Font 快速改变只用于当前编辑

器窗口的缺省字模,更改后立即生效。

8.4. 文件操作

Page 63: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

55

8.4.1. 创建新的文本文件

执行 File | New...命令(或使用快捷键 Ctrl+N,或点击工具箱中的 图

标)来打开 Create Project Item 对话框,然后在左边选 Text File。详细内容

参见 6.6 节。

8.4.2. 打开已有的文本文件

打开已有的文本文件有几种方法:

• 使用标准的 File Open 对话框框。这可以用 File | Open 命令,或用 Ctrl+O

快捷键,或是点击工具箱图标 。

• 在工程窗口的工程树上点击要打开的文本文件。

• IDE 会保存 后使用过的文本文件列表。可以在 File 菜单底部文件列表

中点击需要打开的文件。

在文本编辑器窗口中可以同时打开多个文件。Open 命令不会关闭任何已经

打开的文本编辑器窗口。Visual Prolog IDE 中一个文件只能有一个版本,所以

要打开已经打开的文件时,IDE 会直接进入这个已经打开的文件窗口中。

注意,IDE 的文本编辑器可以打开 UNICODE 和 DOS 两种字符集的文本文件。

DOS 字符集的文件仍会保存为 DOS 字符集的文件,UNICODE 的文件亦仍会保存为

UNICODE 字符集的文件。

8.4.3. 保存编辑后的文本文件

保存编辑后的文件有几种方法:

• 使用 File | Save 命令,或用 F2 快捷键,或点击工具箱中的 图标。

• 注意,IDE 在编译前总会保存所有修改过的文本文件。

• 如果选了Auto Save Editors on Close选项(在IDE选项对话框的 General

标签中),打开后修改了的文件在关闭编辑器时会不经提示就自动保存。

若未选该项,在关闭有修改过文件的编辑器窗口时,会询问是否需要保存

文件。

• 如果选了 Auto Save Every XXX minutes 选项(在 IDE 选项对话框的

General 标签中),所有修改了的文件会每隔指定的时间自动保存一次。

• 如果没选Save without Backup Copy选项(在IDE选项对话框的 Editor

标签中),文本编辑器会在保存文件时自动创建一个该文件的后备文件。

Page 64: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

56

8.4.4. 用不同的名字保存文件

使用 File | Save as 命令。

8.4.5. 整理文本文件中的无用空字符

如果选了 Strip Trailing Spaces from Lines when Saving 选项在 IDE 选

项对话框的 Editor 标签中),在保存文本文件时 IDE 会自动删除各行尾部空格。

8.4.6. 打印文件

使用 File | Print 命令打印当前编辑的文件。这会打开标准的 Windows 打

印对话框窗口,可以进行打印设置。

8.5. 编辑文件

打开文本文件,文本编辑器会将其完全加载到内在中。原来的文件在保存之

前不会改变。

保存修改的文件时也可以选择保存一个原始文件的后备文件。

编辑文件时,IDE 会检查该文件是否被外部更动了。举例来说,打开一个文

本文件后又打开了源代码控制系统(Source code Control System ,SCS),比

如说 Microsoft Visual SourceSafe。这个 SCS 存储了打开的工程的主备份文件,

我们从中取出几个工程文件的 新版本,再回到 IDE 中。这时它会检查打开的文

本(及其它)文件版本与 SCS 更新的情况差异。如有不同,就会出现如下提示:

The file "ExternallyChangedFileName" has been modified outside the IDE text editor. Do you want to reload the file or ignore external changes?

文件编辑与通常 Windows 应用程序遵行的惯例差不多。主要的编辑命令都在

菜单中,还显示有相应的快捷命令。多数编辑命令在弹出式菜单中,可以用鼠标

右键激活这个菜单。

任何更动都可以撤消,撤消后也可以重做;甚至保存文件后也可以做撤消。

不过,要注意撤消的次数是受缓冲区限制的。

注意:载入一个文本文件时,文本编辑器将把所有不可显示字符转换成空格

字符,保存时也会把这样的字符保存为空格字符!

Page 65: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

57

8.5.1. 插入文本

文本输入点(插入点)在光标位置处。光标位置可以通过键盘或鼠标设置。

光标是表示文本插入点的一个小竖线,而鼠标光标则跟随并指示鼠标位置。

如果选择了一些文字后再输入,被选的文字会在键入第一个字符时删除。

要将输入模式更改为覆盖(Overwrite)模式(输入的文字将在光标处替代

原有的文字),可以按一下Insert键。这会使状态条上的Insert变为Overwrite。

再按一次 Insert 键,就会改回到 Insert 模式。

8.5.2. 移动光标

光标限制在已有文本中,在窗口中它不能随意地移动到已经存在的文本之

外。

下面的组合键可用于光标的移动:

移动插入点至: 按键

鼠标光标位置 鼠标左键

文件起始处 Ctrl+Home

文件结尾处 Ctrl+End

从行首到该行第一个非空字符 Ctrl+右箭头

左边缘 Home

行尾 End

向前一个字符 右箭头

回退一个字符 左箭头

向下一行 下箭头

向上一行 上箭头

向前至当前字词结尾 Ctrl+右箭头

回退至前一字词结尾 Ctrl+左箭头

向上一页(窗) Page Up

向下一页(窗) Page Down

上下滚动 拨动鼠标滚轮

至指定行号 Ctrl+F2,再输入行号

至光标指定名称(谓词、事实、域等)的声明 Ctrl+F12

至光标指定名称的声明(至光标指定谓词的子句) F12

上表中除 后三项外,其余各项还可以结合 Shift 键来扩展选区。

Page 66: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

58

8.5.3. 使用书签

有时希望标记某一行以便快速找到它,但 Visual Prolog 文本编辑器并未直

接实现这个功能。不过在 IDE 中使用文本编辑器时,可以利用调试器(Debugger)

中的断点功能来提供类似书签的功能。

8.5.3.1. 设置书签

将光标置于想要放置书签的行上,按 F9 键(也可以点击弹出菜单中的

Breakpoint -> Toggle Breakpoint 或使用 Debug | Toggle Breakpoint 菜单命

令)。这时该行的起始处会出现 断点图标,在文本编辑器窗口的状态条上可以

看到行号,记下它。

8.5.3.2. 获取书签

按 F4 键(或选择 View | Breakpoints 菜单命令),出现 Breakpoints 窗口:

这个窗口中可以等到所有文件中现有的断点。注意,关闭的文件其断点(相

当于书签)也会显示出来。

按下面的步骤获取文本编辑器中想要找的书签:

1. 在 Breakpoints 窗口中选择相应的断点(依据文件名及行号),

2. 双击该断点,光标将定位到文本编辑器中相应文件放置该断点的那

一行(如果文件已经关闭则会在文本编辑器中打开它)。也可以用

鼠标右键点击 Breakpoints 窗口,在随后出现的弹出菜单中选命令

Goto Source(也可以用 Breakpoints | Goto Source 菜单命令):

Page 67: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

59

8.5.3.3. 取消书签

取消断点(书签)有几个方法:

1. 光标就在文本编辑器中断点所在行时,只需要按 F12 键就可以取消

这行上的断点(也可以用弹出菜单 Breakpoint -> Toggle

Breakpoint 项及 Debug | Toggle Breakpoint 菜单命令)。

2. 用弹出菜单的 Delete 命令可以取消选择的断点(也可以用

Breakpoints | Delete 菜单命令)。

3. 用弹出菜单中的 Remove All 命令可以取消所有的断点(也可以用

Breakpoints | Remove All 菜单命令)。

8.5.4. 用 Go to ...命令定位

Go to IDE 菜单含有若干项命令:

Go to ...命令

这些命令可以帮助我们在工程的文本文件中快速定位。目标文件可以是在文

本编辑器中打开的文件,也可以是还没有打开的。下面介绍这些命令。

Page 68: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

60

8.5.4.1. Go to Declaration

要使用这个命令,光标必须置于工程中声明过的某个名称上。这个名称可以

是工程中声明的(包括在工程中使用的 PFC 包中声明的)谓词、事实、域、常数、

接口或类名。

按组合键Ctrl+F12(或点击Go to Declaration菜单项,或用Go to | Go to

Declaration菜单命令),光标会跳至这个名称的声明,相应的源代码文件会在

文本编辑器中打开(若还没有打开将自动打开)。如果这个名称在多个范围有声

明,则会有解决模糊(Resolve Ambiguity)对话框显示这些范围:

在其中选择需要的范围来使用。

8.5.4.2. Go to Definition

要使用这个命令,光标必须置于工程中定义过的某个谓词名称上。

按 F12 键(或点击弹出菜单的 Go to Definition 项,或使用 Go to | Go to

Definition 菜单命令),光标就会跳至该谓词的子句定义上,相应的源代码文

件会在文本编辑器中打开(若还没有打开将自动打开)。如果子句定义的这个谓

词存在于多个范围,则会有解模糊对话框显示这些范围。注意,只有那些明确含

有谓词子句定义文本的范围才会显示。

8.5.4.3. Go To Related Files...

按Ctrl+R组合键IDE会打开当前文件的相关文件并将光标置于文件起始处。

如果有多个相关文件,则会出现 Related Files 对话框显示这些文件:

同一个类下面这些类型的文件是相互关联的:

Page 69: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

61

• 类的声明文件,

• 类的实现文件,

• 该类生成对象的接口文件,

• 呈现该类生成对象的某些资源(如 GUI 对话框、窗口、表单等)文件。

8.5.4.4. Go to Resource Editor

要使用这个命令,必须在文本编辑器窗口中且光标置于有效的资源标识上。

按 Ctrl+Shift+C 组合键 IDE 会打开光标所指资源标识关联的资源文件。文

件会在相应的编辑器窗口中打开。

8.5.4.5. Go to Line Number

要在文本编辑器窗口中才能使用该命令。

按 Ctrl+F2 组合键(或点击弹出菜单 Go to Line Number 项,或使用 Go to

| Go to Line Number 菜单命令),出现 Go to Line Number 对话框:

输入行号,光标直接跳至该行。

8.5.4.6. Go to Position on Clipboard

Visual Prolog 程序运行时出现错误后,Visual Prolog 的异常处理系统会

显示 Program Error 对话框,其中有运行错误的相关信息,包括错误的简要描述、

发生错误的文件名及谓词。

在这个对话框中有一个 Copy to Clipboard 按钮,点击它可以将文件名及错

误位置放入 Windows 系统剪贴板中。

现在加载相应的工程到 IDE 中,按 Shift+F2 键(或用 IDE 菜单命令 Go to |

Go to Position on Clipboard),IDE 会按剪贴板保存的文件名和错误位置打

开对应的文件并将光标置于相应的位置上。

Page 70: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

62

8.5.4.7. Go to Selected Error (Warning)

Go to Next Error (Warning)

Go to Previous Error (Warning)

编译工程文件发生错误或有警告时,会出现 Errors (Warnings)窗口,其中

有问题简要描述、文件名、发生问题的位置等内容。

双击这个窗口中的某个错误,IDE 会打开相应的文件并将光标置于出现该问

题的位置上。单击某个错误再按回车键或是执行弹出菜单的 Go to Code 命令具

有相同的效果。

选择窗口中某个错误或警告消息(不选等同于选了第一项)后进入任意其它

IDE 窗口,可以随时按 F8 键(或用 IDE 菜单命令 Go to | Go to Next Error

(Warning)),IDE 会打开当前错误消息的下一条错误消息相应的文件,将光标

置于出现问题的位置上。

相类似,用 Shift+F8 键(或用 IDE 菜单命令 Go to | Go to Previous Error

(Warning)),IDE 会打开当前错误消息的上一条错误消息相应的文件,将光标

置于出现问题的位置上。

8.5.5. 选择文本

文本总是作为连续的字符流来选择的。

• 可以用鼠标选择文本:

1. 在要选择的文本起始处按住鼠标左键,而后拖动鼠标光标至要

选择的结尾处释放左键。

2. 在要选择的文本起始处点击鼠标左键,而后按住 Shift 键,在

要选择的结尾处点击左键。

• 可以用键盘选择文本:

用光标移动键(参见 7.5.2 节)将光标移动至要选择的文本起始处,

而后按住 Shift 键,再将光标移动到要选择的结尾处。

• 可以选择编辑文本全体:

选择 Edit | Select All 菜单命令或按 Ctrl+A 组合键。

• 可以用 Esc 键取消选择。

Page 71: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

63

8.5.6. 移动文本

• 移动选择的文本:

在选择文本内按住鼠标左键,再拖动鼠标光标到需要的位置上,释放左键。

• 拷贝选择的文本:

在选择文本内按住鼠标左键及 Ctrl 键,再拖动鼠标光标到需要的位置上,释

放左键。

8.5.7. 删除文本

用以下方法可以删除文本:

要删除: 方法:

选择的文本 按 Delete 或 Backspace 键

下一个字符 Delete

前一个字符 Backspace

直到当前单词的结尾处 Ctrl+Delete 或 Delete -> Delete Word Right 弹出

菜单命令

直到前一单词的起始处 Ctrl+Backspace 或 Delete -> Delete Word Left 弹

出菜单命令

当前行 Ctrl+Y 或 Delete -> Delete Line 弹出菜单命令

至行尾 Delete -> Delete Line 弹出菜单命令

本单词 双击单词选择后按 Delete 或 Backspace 键

整篇文档 Ctrl+A 选择全部文本后按 Delete 或 Backspace 键

8.5.8. 使用剪贴板

Windows 的剪贴板可以拷贝文本编辑器中的文本,用之与外部的文本编辑器

/查看程序交换内容。

下面这些剪贴板命令可以通过文本编辑器弹出菜单、Edit 子菜单及工具箱

访问:

• Cut

组合键:Ctrl+X 或 Shift+Del

Edit | Cut 或 Cut 弹出菜单项

Page 72: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

64

工具箱图标:

只有选择了一些文字之后这个命令才是可用的。它可以删去选择的文本并将

其放入剪贴板内。放入剪贴板的内容会替换原先剪贴板的内容。

• Copy

组合键: Ctrl+C 或 Ctrl+Insert

Edit | Copy 或 Copy 弹出菜单项

工具箱图标:

只有选择了一些文字之后这个命令才是可用的。它可以将选择的文本放入剪

贴板内。放入剪贴板的内容会替换原先剪贴板的内容。

• Paste

组合键: Ctrl+V 或 Shift+Ins

Edit | Paste 或 Paste 弹出菜单项

工具箱图标:

这个命令将剪贴板的内容插入到指定位置。如果剪贴板是空的,这个命令无

效。注意,编辑器会把剪贴板中所有不可显示的字符转换为空格。

如果文本编辑器中有选择了的内容,则 Paste 命令会用剪贴板的内容替换选

择了的内容。

记住:剪贴板内容在所有 windows 应用程序中都是一样的。

8.5.9. 改变大小写

可以用下面的方法改变选定文本的大小写:

• 将选定的所有字母改为大写:Edit | Upper Case 或 Ctrl+Shift+U.

• 将选定的所有字母改为小写:Edit | Lower Case 或 Ctrl+U.

• 反转字母的大小写:Edit | Toggle Case 或 Ctrl+Alt+U.

Page 73: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

65

8.6. 查找文本

可以用 Find Text对话框查找编辑文件中的指定文本。

Find Text对话框可以按Ctrl+F组合键(或Find弹出菜单项,或Edit | Find

菜单命令)激活。

在 Find Text 对话框中点击 Find 按钮后,对话框就会关闭,文本编辑器开

始查找指定的串,找到后会高亮显示该串。要查找下一个出现该串的位置,可以

按 F3 键(或使用 Edit | Find Next 菜单命令,或 Find Next 弹出菜单命令)。

8.7. 替换文本

用 Replace Tex 对话框可以查找与替换编辑文件中的指定文本。

可以按Ctrl+H组合键(或Replace弹出菜单项,或Edit | Replace菜单命令)

调出 Replace Text对话框。

8.8. 在多个文件中查找文本

使用 Find in Files对话框,可以在指定的一组文件中找出任意字符组合(包

括大小写字符、整个单词,或使用规则表达式表示的内容)。

用 Ctrl+Shift+F 组合键(或 Find in Files 弹出菜单项,或 Edit | Find in

Files 菜单命令)可以激活 Find in Files 对话框。

8.9. 查找含有某个子串的 Visual Prolog 名称

可以使用 Source Browser查找工程所有名称中含有某个子串的特定名称。

比如,可以查出所有名称中含有“string”的谓词。

8.10. 插入工程已知的名称

在IDE中,文本编辑器提供了一些非常有用的 Insert菜单命令:

Page 74: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

66

“插入”菜单

利用这些命令可以非常方便地插入在工程中声明过的谓词、事实、域、常数

等。这些命令大多数依赖编译器生成的 Browse information,因此,为了让新

声明的名称能出现在Insert菜单命令的对话框中,先要对编辑的文件进行编译。

Page 75: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

67

9. 资源编辑 9.1. 概述

resource(资源)这个词在计算机术语中有很多含义。在 GUI 系统环境中“资

源”这个词涉及窗口、对话框、表单、图片、图标、光标、设备关联、笔刷、内

存配置等等所有这些东西。还有一类特殊的资源是类型库文件。

在 Visual Prolog 中,我们说到资源,是指对窗口、对话框、表单、菜单、

工具箱和帮助条、光标、位图、图标以及一种特殊的资源—类型库(它们是由

IDE 中的各种资源编辑器创建的,或是由其它外部的资源编辑器创建的)等等所

有这些东西的描述。这些资源的布局、属性等内容保存在特殊的资源描述文件中,

而这些文件(代表了在工程中注册的资源)又会在工程文件 ProjectName.PRJ6

中被引用。构建工程时,IDE 将生成符合工业标准的 ProjectName.RES 二进制资

源文件及资源标识文件 resourceIdentifiers.i(以便在源模块中引用资源)。

菜单、光标、位图、图标及 VPI 包风格的对话框,还有类型库文件将包含在

资源文件中。而窗口、表单、工具箱和帮助行等会直接在应用程序源模块中生成

Prolog 代码,因为标准的.RES 文件不支持这些东西。

9.1.1. GUI 风格和 VPI 风格的资源

以前,Visual Prolog 的窗口程序—也就是带有图形用户界面的程序—是用

VPI(可视化编程接口)包开发的。这个包是 Prolog 基础类(PFC)的包之一。

VPI 是一种高级应用程序接口(API),设计用于为 Prolog 应用程序提供完

善的用户接口,方便地使用当今操作系统及显示硬件的图形功能。这类应用程序

需要的资源与工具有:窗口、菜单、对话框、控件、笔刷、光标、插入点光标、

图片等等,所有这些都做成了简单的 Prolog 结构。

不过,在开发 VPI 时 Visual Prolog v. 5 还不是面向对象的语言!因此,

VPI 层也不具备面向对象的特点。结果,将 VPI 用在新的面向对象的 Visual

Prolog 版本中时,这样的 VPI 包就显得相对比较陈旧了。这是因为,所有的 VPI

特征都是在类中声明的,在接口中则没有,这样的包不能产生对象。对当前的面

向对象版本的 Visual Prolog 语言来说,这样的包性能上受到了限制。

所以,PDC 又开发了 GUI 包以提供 API 真正面向对象的实现,支持窗口系统

的主要功能。这个包提供了面向对象的窗口、对话框、表单、控件处理。它构建

于 VPI 包之上,提供了一个新的抽象层,不仅易于使用而且保持了与 VPI 程序的

兼容。这是因为在同一个程序中,既可以使用 GUI 风格编程也可以使用 VPI 风格

编程。由于 GUI 包中没有提供菜单和工具箱,这样的资源仍要使用 VPI 包来处理。

Page 76: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

68

使用 GUI 包(所有窗口特征都是对象化的)编程的范式与使用 VPI 包(所有

窗口特征是传统的复合域结构,由普通的非对象谓词处理)编程的范式差别很大。

所以,IDE 在程序生成时提供了两种不同风格的图形用户界面处理:

1. UI Strategy 的 Object-oriented GUI (pfc/gui)风格。这是主要使用的

编程用户接口策略,由 GUI 包提供了对新的面向对象窗口系统的支持。 简

称它为 GUI 风格程序。

2. UI Strategy 的 Conventional GUI (pfc/vpi)风格。这是老的编程用户接

口策略,由 VPI 包提供对窗口系统的支持。简称它为 VPI 风格程序。

使用VPI风格由IDE生成缺省程序代码时,其中的任务窗口及其它窗口和对话

框等由VPI包谓词创建。因此,该风格程序的 Create Project Item对话框只能

支持创建VPI架构对话框 和VPI架构窗口。

使用 GUI 风格由 IDE 生成缺省程序代码时,其中的任务窗口和其它对话框及

表单等由 GUI 包声明的构造类型(接口)作为对象创建。处理这些对象的是相应

的对象谓词。

GUI 风格程序中,任务窗口是唯一的窗口(注意,这是个 GUI 风格的窗口)。

所有其它窗口类型的元素应该用对话框(对话框接口类型)和表单(formWindow

类型)。因此,该风格程序的 Create Project Item 对话框只能支持创建 GUI架构对话框 和 GUI 架构表单。GUI 风格的元素是对象,支持 GUI 包构造类型,

由 GUI 包谓词处理。

在 VPI 风格程序中,除了 VPI 架构对话框和 VPI 架构窗口外,也可以创建

GUI 架构表单(它当然是由 GUI 包谓词来处理的)。而另一方面,由于 GUI 程序

都包含了 VPI 包,所以 VPI 的一些特性也可以嵌入在 GUI 风格的程序中。

因为GUI风格的对话框、表单及IDE控件,还有任务窗口是GUI包类型的对象,

所以,在它们之中的所有控件应该是GUI包的对象。但是,在VPI风格的对话框和

窗口中的控件是普通的VPI控件,所以可以明白 IDE Designer需要创建不同类型

的控件:

• GUI 风格对话框、表单、IDE 控件及任务窗口中的 GUI style controls;

• VPI 风格对话框和窗口中的 VPI style controls。

要理解GUI风格程序与VPI风格程序的差别以及GUI风格和VPI风格的对话

框、窗口、表单及控件的差别,可以用相应的用户接口策略创建缺省的工程,构

造这些工程,再查看生成的代码,可以看到这两种策略对各种资源处理的不同。

也可以查阅我们推荐的网上的相关资料。

Page 77: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

69

9.1.2. 资源的命名

IDE 某个编辑器创建一个资源时,需要对其命名。IDE 会按一定规则提供一

个候选的名称(或符号常数),用户可以接受、修改或是完全另起一个名字。此

后,这个名称(符号常数)就是与相应资源对应的 Visual Prolog 变量或事实(符

号常数)的名称。我们将这样的符号常数称为资源标识(资源 ID 或就简称为 ID);

它们在应用程序中用于引用相应的资源项。编译时,IDE 会给各资源符号常数

(ID)分配一个唯一的整数值。

工程构建时,会生成一个用于连接链接器的.RES 文件。IDE 还会生成一个

resourceIdentifiers.i 文件,这个文件中包含着所有生成资源的 ID 符号常数

及与之相对应的整数值。所有与资源相关的工程模块都应该插入该文件。而 IDE

分配给各资源标识的数值(不是符号常数),在运行时是处理这些资源的 VPI

谓词实际使用的资源标识。

在 VPI 包控件或菜单项的属性对话框里,也可以直接输入想要使用的整数值

作为某个资源的 ID 值。例如:

• 某资源的常数名称: idd_AboutDialog

• 也可以用一个整数: 10202

9.1.3. 资源的链接

.RES 文件被链接成目标可执行模块,在其中形成资源段。执行时,VPI 谓词

再由.EXE 或.DLL 文件资源段获取对话框、菜单、图标及位图等内容。

9.1.4. 位图、图标及光标

它们既可以用 IDE 图形编辑器创建,也可以用第三方工具(尤其是创建、捕

获和修改图形的工具)来创建。每个图标、位图或光标的定义在转换成.RES 文

件之前都是独立的一个文件。

9.1.5. 对话框资源

VPI包对话框应该用IDE的 IDE Designer创建。它简化了对话框中所有控件

定位、调整大小等琐碎工作。运行时,如果资源在资源段已经存在了,对话框就

可以用vpi::winCreateResDialog或vpiDialog::create调用创建在屏幕上。

Page 78: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

70

9.1.6. 菜单资源

菜单是在 IDE 的菜单编辑器是设计的。窗口由 vpi::winCreate 调用创建,

其菜单项所带参数设定。不用参数,还可以用 res_menu(ResId),窗口会自动获

取与使用 ResId 指定的相关资源形成菜单

9.1.7. 类型库资源

IDE 不能编辑类型库(Type Libraries)。类型库是 COM 组件使用的,有关

介绍请参看 PFC 帮助文件的 COM 包相关内容。

9.2. IDE 设计工具

在 IDE 设计工具(IDE Designer)中编辑对话框、窗口、表单以及 IDE 控件

等都是很相似的。实际上的差别,VPI 包的对话框定义通常放在资源文件中而 GUI

包的对话框、窗口和表单总是动态地由代码创建。

9.2.1. 编辑对话框

有关创建对话框及对话框属性设置的介绍,请参看 6.7 节。

要编辑对话框,可以在工程树中双击相应对话框描述文件的名字(其扩展名

为.dlg)。这时,会出现 IDE 设计工具,在这里按需要的样式来编辑对话框。

创建新对话框后出现的 IDE 设计工具

新对话框创建时,有三个缺省的按钮:OK、Cancel 和 Help。可以随意地删

除它们或重新摆放它们的位置。

Page 79: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

71

对话框中的每个控件必须有个标识名称(VPI 风格的对话框中是标识常数),

它在对话框中应该是唯一的。尽管在一个对话框中的两个控件名称(或标识常数

值)不能相同,但在不同对话框中相同功能的控件取相同的名称(常数值)还是

不错的办法。

9.2.1.1. 控件的类型

按钮在程序中常用于启动一个动作

勾选控件用于确定两种状态之一。比如,开或关。

圆按钮控件用于确定多个选项中的某一个。

静态文本控件给对话框中的文本保留一块地方。尽管名称是“静

态“,但程序可以在执行中改变它。它常用于提示输入或标明其

它控件的名称。

编辑控件用于文本的编辑。被编辑的文本串可以是多行的。

列表控件用于显示多个元素并可以从中选取一个或多个。

列表按钮用于从弹出的列表中进行选择,点击一下按钮会弹出列

表,再点击一下则会收起列表。

列表编辑控件可以如同编辑控件一样对单行文本进行编辑,还可

以选择列表中的某一项。

垂直滚动条和水平滚动条用于在某个规格范围中选择值。

组框控件用于将一组控件用组名称整合在一个功能组中,其唯一

的功能就是可视化。

图标控件为图标图象保留一块地方。

用户控件(Custom Control)可以是由工程创建的IDE控件,也

可以是VPI用户定义控件(由窗口类vpi::classCreate定义),

还可以是从DLL、VBX或OCX中引入作为COM包(COM packages)的

控件。

Page 80: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

72

9.2.1.2. 插入控件

要在对话框中插入一个控件,只需点击控件箱中相应的图标(也可以在 IDE

主菜单或 IDE 设计工具弹出菜单中的 Controls 子菜单中选择需要的控件)。

9.2.1.3. 控件箱

开始时控件箱显示在 IDE 设计工具下方,如下图示:

控件箱

点击其中的图标,就选择了要放入待编辑的对话框/窗口/表单/IDE 控件的

控件类型(对话框/窗口/表单/IDE 控件等也可以称之为容器)。点击某个图标

后,当前光标的形状就会变为相应控件的形状。移动这个光标到容器中需要的位

置上,再点击鼠标键,该控件就会以缺省的尺寸定位下来。

还可以用鼠标划出一个矩形来放置控件而不是点一下鼠标,这样一来,既确

定了控件的位置,又确定了控件在尺寸。

用鼠标在 VPI 风格的容器(VPI style container)中放置了 VPI 控件后,

会出现相应的控件属性对话框。可以在这里改变控件的某些属性。关闭这个对话

框后,控件会在容器中指定的位置显现出来。

用鼠标在 GUI 风格的容器(GUI style container)中放置了 GUI 控件后,

它会立即呈现在容器指定的位置。要改变 GUI 控件的属性,需要选选择该控件,

这时它的属性会出现在 GUI 控件属性表(GUI control Properties table)中。

控件箱中有下面这些图标:

图标 插入新控件: 描述

Push Button 选该控件后光标变为

Check Box 选该控件后光标变为 .

Page 81: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

73

Radio Button 选该控件后光标变为 .

Static Text

Control 选该控件后光标变为 .

Edit Control 选该控件后光标变为 .

List Box

选该控件后光标变为 .

List Button

选该控件后光标变为 .

List Edit

选该控件后光标变为 .

Horizontal

Scroll Bar 选该控件后光标变为 .

Vertical

Scroll Bar 选该控件后光标变为 .

Group Box 选该控件后光标变为 .

Icon Control

选该控件后光标变为 .

Custom

Control 选该控件后光标变为 .

9.2.1.4. 控件的选择与取消选择

在控件中点击就会选择该控件,被选择的控件四周会出现一个框。

在对话框中按住鼠标左键拖动鼠标可以选择矩形框中的多个控件。

选择了一个或多个控件后,还可以按住 Ctrl 键点击需要的控件将其添加到

已选的控件中。

要取消选择,只需要在控件外点击鼠标,被选择的控件会失去它四周的框。

Page 82: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

74

9.2.1.5. 改变控件的大小

将控件放入对话框时,它会有个缺省的尺寸。要改大小,先点击控件选择它,

然后调整选框上的尺寸调节钮。光标的形状告诉我们可以调整的方向,按住鼠标

键拖动到需要的大小后松开。

还可以双击控件激活它的属性对话框来设置其大小。选择需要的位置或尺寸

输入后,按回车键回到对话框中。

注:图标的大小不能更改,只能改变它的位置。

9.2.1.6. 移动控件

要移动一个或一组控件,先选择,然后把光标放在选框中按下鼠标,拖动鼠

标指针到期望的位置后松开鼠标键。还可以用方向键按网格设置做精细移动。

9.2.1.7. 控件的对齐

要布设一组控件,先选择,再在布局(Layout)工具箱中点击相应的图标(也

可以选 IDE 菜单或弹出菜单中 Layout 子菜单的项)。

布局工具箱

调整控件的布局命令有:

左对齐 对齐所选控件左边沿

左右对中 对齐所选控件左右中线

右对齐 对齐所选控件右边沿

顶对齐 对齐所选控件上边沿

Page 83: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

75

上下对中 对齐所选控件上下中线

底对齐 对齐所选控件下边沿

等宽间隔 在所选 左边和 右边控件之间平均分配各控件间隔

网格 打开或关闭网格(见后述)

等高间隔 在所选 上边和 下边控件之间平均分配各控件间隔

大小相同 使所选控件与模型控件大小一致

等宽 使所选控件与模型控件宽度一致

等高 使所选控件与模型控件高度一致

尺寸适合内容 调整所选控件大小到适合显示其标题

9.2.1.8. 编辑 GUI 控件的属性

在 IDE 设计工具中打开 GUI 对话框或表单(GUI 窗口)时,旁边会出现控件

属性表(Control Properties table)。

要改变 GUI 包控件的属性,选要选择控件(点击它),选择后它的属性就会

呈现在控件属性表中。在这个表里就可以选择需要的项进行修改了。

开始时控件属性表是空的,当选择了某个控件后就会显示出该控件相应的属

性。如果控件属性表关闭了,双击某个控件后属性表就会再次打开。也可以在IDE

设计工具的快速菜单(speed menu)中用Control Attributes命令打开控件属性

表。

不同的控件会显示出略不相同的属性表。有些属性是所有类型的控件都有

的,有些则是某个控件特有的。下面详细介绍这些属性。

• 通用类的属性(General properties)是所有控件都有的,包括:

Left Anchor、Top Anchor、Right Anchor、Bottom Anchor、Container Name、

Enabled、Lock to Container、Name、Representation、TabStop、Title、

X、Y、Width、Height和 Visible。

• 特殊类的属性(Specific properties)是不同 GUI 控件特有的,包括:

3State、AlignBaseline、Alignment、AllowPartialRows、Auto、

AutoNotify、AutoHScroll、AutoVScroll、Border、Case、Class、Default、

ExtendedSel、HideSel、Hscroll、Icon Name、IgnorePrefix、LeftText、

MultiColumn、MultiLine、MultiSelect、Password、ReadOnly、Rows、

Page 84: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

76

Sort、StaticScrollbar、Style、UseTabStops、Vscroll、WantReturn、

Wrap。

9.2.1.8.1. GUI 控件通用属性

这类属性几乎所有 GUI 控件都有:

Name

Name 输入栏可以用正确的 Visual Prolog 名给控件起个名字作为它的标识

符。

Name 缺省值是控件类型(如 pushButton、checkBox、listButton 等)加后

_ctl。如果创建相同类型的多个控件,就会在控件类型后加上序数,如:

pushButton1_ctl。这个缺省值是可以修改的,直接输入想使用的名字就行。

Representation

这一属性可以取值 Fact Variable 或 Variable。

Fact Variable

如果指定为 Fact Variable,IDE 会生成事实变量,它可以保存控件的对象。

这个事实变量用于在代码中引用该控件。事实变量的名称取决于 Name 属性,如

ok_ctl。注意,事实变量的名称在此自动地使用小写字母开头。

Variable

如果指定为 Variable,IDE 会用普通变量统一控件的对象。这个变量用于在

代码中引用该控件。变量的名称取决于 Name 属性,如 Cancel_ctl。注意,变量

的名称在此自动地使用大写字母开头。

缺省值是 Fact Variable。

Title

Title 属性规定了显示在控件上作为标题(标签)的内容。

标题文本中可以指定一个带下划线字符作为快捷键使用。要给某个字符加下

划线,可以在该字符前加符号&。运行时这个字符在控件标题中就会带下划线显

示。注意,在这个属性的取值栏中,规定的带下划线字符也会显示出来如下图:

Page 85: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

77

只有当选择了 Title 属性的取值栏时,才会显示出字符前加 AND 符号&的样式:

如果需要在控件标题中显示一个 AND 符号&,请使用&&。

Lock to Container

可选 True 或 False。如果是 True,则该控件被锁定在 Container Name 属性

指定的容器中。

Container Name

在这个列表框中可以选择一个在对话框或表单中定义过的容器名称(目前仅

支持组框 groupBox 类型的容器)。

所有属于同一容器的控件是同组相关控件。用户可以用方向键从一个控件移

到同组的下一个控件。

只有可以容纳控件的组框名称才会作为Container Name的值出现在列表中。

如下图:

它表示了有两个可以放置控件的组框 GroupBox_ctl 和 GroupBox1_ctl。如

果控件不需要与任何容器相关,应该选择[none]。

X, Y, Width, Height

这些属性确定控件的坐标与尺度:

X - 以对话框基本单位度量的控件左上角坐标 X。 Y - 以对话框基本单位度量的控件左上角坐标 Y。 Width - 以对话框基本单位度量的控件宽度。 Height - 以对话框基本单位度量的控件高度。

Left、Top、Right 及 Bottom Anchors

当容纳控件的对话框或表单大小改变时,这些属性决定了如何处理控件的位

置(或许还涉及控件的大小)。一般的规则在“对话框调整时用锚点定位 GUI

控件”一节中有叙述。

Page 86: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

78

Left Anchor

只能取值 True 或 False。True 意味着控件的 Left(左)边界与容纳它的对

话框(表单)的左边界总是保持一个固定的值,也就是 X 属性规定的值。

Top Anchor

只能取值 True 或 False。True 意味着控件的 Top(顶)边界与容纳它的对

话框(表单)的顶边界总是保持一个固定的值,也就是 Y 属性规定的值。

Right Anchor

只能取值 True 或 False。True 意味着控件的 Right(右)边界与容纳它的

对话框(表单)的右边界总是保持一个固定的值。当选定控件时,这个值会出现

在箭头边上。

Bottom Anchor

只能取值 True 或 False。True 意味着控件的 Bottom(底)边界与容纳它的

对话框(表单)的底边界总是保持一个固定的值。当选定控件时,这个值会出现

在箭头边上。

Enabled

只能取值 True 或 False。它规定了控件一创建后是激活的(True)还是禁

止的(False)。缺省值是 True。

可以用谓词 window::getEnabled/0->查看控件是否激活:

IsEnabled = checkButtonName:getEnabled(), IsEnabled = true,

还可在程序中用谓词 window::setEnabled/1 设置这个标志:

IsEnabled = true, checkButtonName:setEnabled(IsEnabled),

Visible

只能取值 True 或 False。它规定了控件一创建后是可见的(True)还是隐

藏的(False)。缺省值是 True。

可以用谓词 window::getVisible/0->查看控件是否可见:

IsVisible = checkButtonName:getVisible(), IsVisible = true,

Page 87: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

79

还可在程序中用谓词 window::setVisible/1 设置这个标志:

IsVisible = true, checkButtonName:setVisible(IsVisible),

TabStop

只能取值 True 或 False。它决定了该控件是否属于一个控件组,用 TAB 键

可逐个选择。缺省值是 True(属于可用 TAB 键逐个选择的某一控件组)。

可以用谓词 control::getTabStop/0->查看控件该属性:

IsTabStop = checkButtonName:getTabStop(), IsTabStop = true,

还可在程序中用谓词 control::setTabStop/1 设置这个属性:

IsTabStop = true, checkButtonName:setTabStop(IsTabStop),

如果 TabStop 是 true,按 Tab 键变换选择项时这个控件将可以得到焦点(被

选择)。再按 TAB 键,焦点会转移到下一个 TabStop = True 的控件上。

9.2.1.8.2. 不同类型 GUI 控件的特殊属性

下面这些属性是不同类型控件特有的:

Auto

只能取值 True 或 False。它决定了控件是否为自动的(自动勾选框或自动

圆按钮)。当点击自动控件时,它会以适当方式改变自身状态。

可以用谓词 checkButton::getStyle/2 及 radioButton::getAuto/0->查看

控件的该属性:

checkButtonName:getStyle (IsAuto, _Is3State), IsAuto = true,

程序中可用 checkButton::setStyle/2 或 radioButton::setAuto/1 谓词设

置这个属性:

IsAuto = true, checkButtonName:setStyle (IsAuto, _Is3State),

缺省值是 True(自动)。

3State

Page 88: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

80

只能取值 True 或 False。它确定勾选框是否为三态(未勾选、已勾选、未

确定)。可以用 checkButton::getStyle/2 谓词检查控件的这个属性:

checkButtonName:getStyle (_IsAuto, Is3State), Is3State = true,

还可以在程序中用 checkButton::setStyle/2 谓词设置它:

Is3State = true, checkButtonName:setStyle (_IsAuto, Is3State),

三态勾选框除了选框可以变灰而外与普通勾选框是一样的。灰暗的状态用于

表示选框状态未确定。

缺省值是 False(非三态)。

LeftText

只能取值 True 或 False。它确定了(勾选框或圆按钮)控件的标题文字是

放在该控件的左边还是右边。可以用谓词 checkButton::getLeftText/0->或谓

词 radioButton::getLeftText/0->查看控件的这个属性设置情况:

IsLeftText = checkButtonName:getLeftText(), IsLeftText = true,

程序中还可用checkButton:setLeftText/1或 radioButton:setLeftText/1

谓词设置该属性:

IsLeftText = true, checkButtonName:setLeftText(IsLeftText),

缺省值是 False(标题在右边)。

AlignBaseline

只能取值 True 或 False。它确定了该控件的标题文字是否要与其它相同水

平位置控件的标题取齐。

这个属性涉及所有可以有标题的控件(静态文本、勾选框、编辑和列表编辑

控件等)。

可以用谓词 getAlignBaseline(如 editControl::getAlignBaseline/0->)

获取控件的这个属性:

IsAllignBaseLine = checkButtonName:getAllignBaseLine(), IsAllignBaseLine = true,

Page 89: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

81

程序中可用 setAlignBaseline(如 textControl::setAlignBaseline/1)谓

词设置控件的这个属性:

IsAllignBaseLine = true, checkButtonName:setAllignBaseLine(IsAllignBaseLine),

缺省值是 True(标题水平对齐)。

Default

只能取值 True 或 False。它确定该控件是否为缺省的按钮控件,按回车键

会激活缺省按钮控件的动作。

可以用 dialog::tryGetDefaultButton/0->谓词获取对话框缺省按钮的对

象。还可以用 dialog::setDefaultButton/1 谓词设置对话框中的缺省按钮。

每个对话框只能有一个缺省按钮,但可以有多个按钮的这个属性值被设置为

True。IDE 将 后一个设置该属性为 True 的按钮确定为对话框的缺省按钮。

仅对 OK 按钮这个属性的缺省值会设置为 True(是缺省按钮),对其它所有

按钮缺省值都是 False。

Style Push buttons

这个属性的取值,可以为 Cancel、OK 和 Regular。

Cancel

Cancel 样式的按钮是由 button::newCancel/1 构造器创建的。

对话框/表单中含有一个 Cancel 样式的按钮时,它将提供标准的 Esc 键处理

例程:关闭对话框/表单,没有任何附加动作。

OK

OK 样式的按钮是由 button::newOk/1 构造器创建的。

对话框/表单中含有一个 OK 样式的按钮时,该对话框/表单在 OK 按钮被按下

时会进行确认检查。

Regular

Regular 样式的按钮是由 button::new/1 构造器创建的。

这样的按钮不带任何初始缺省的特殊处理。

Page 90: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

82

Group boxes

组框属性的取值可以为:Group Box、Simple Border、Horizontal Separator、

No Border。这些值规定了组框控件的边框类型。

缺省值是 Simple Border。

可以用 groupBox::getBorderStyle/0->谓词查看边框的类型:

GroupBoxBorderStyle = controlName : getBorderStyle (),

也可以用 groupBox::setBorderStyle/1 谓词在程序中设置边框:

GroupBoxBorderStyle = groupBox(), controlName : setBorderStyle (GroupBoxBorderStyle),

Alignment

可以取值 Left、Center 或 Right。这些选项决定了控件中的文字如何对齐。

缺省值是 Left(左对齐)。

Left

规定控件中的文字应当左对齐。

用 textControl::getAlignment/0->谓词可以查看控件的这个属性值:

AlignmentType = textControlName : getAlignment (), AlignmentType = alignLeft(),

用 textControl::setAlignment/1 谓词可以在程序中设置这个属性:

AlignmentType = alignLeft(), textControlName : setAlignment (AlignmentType),

Center

规定控件中的文字应当居中对齐。

AlignmentType = alignCenter(). Right

规定控件中的文字应当右对齐。

AlignmentType = alignRight().

Page 91: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

83

Wrap

可以取值 True 或 False。它规定了控件中的文字是否可以回绕成多行。缺

省值是 True(回绕)。

用 textControl::getWrap/0->谓词可以查看控件的这个属性:

IsNoWrap = textControlName : getWrap (), IsNoWrap = true,

用 textControl::setWrap/1 谓词可以在程序中设置这个属性:

IsNoWrap = false, textControlName : setWrap (IsNoWrap),

IgnorePrefix

可以取值 True 或 False。设置为时 True,禁止将置于静态文本控件标题中

的符号&解释为快捷键字母前 。快捷键字母是带下划线显示的,其前的&不显示。

缺省值是 False。

注意,静态文本控件本身是不会激活的。按静态文本控件中的快捷字符键,

激活的是边上(用这个静态文本控件来当标题的)控件。

这个属性常常在需要将含有&字符的文件名显示在静态文本控件中时使用。

用 textControl::getIgnorePrefix/0->谓词可以查看控件的这个属性:

IsIgnorePrefix = controlName : getIgnorePrefix (), IsIgnorePrefix = true,

在程序中可以用 textControl::setIgnorePrefix/1 谓词设置这个属性:

IsIgnorePrefix = true, controlName : setIgnorePrefix (IsIgnorePrefix),

MultiLine

可以取值 True 或 False。为 True 时,编辑控件允许多行。缺省值是 True。

注意,编辑控件在单行时(False)没有 VScroll、HScroll、AutoVScroll

及 WantReturn 属性

可以用 editControl::getMultiLine/0->库房查看控件的这个属性:

IsMultiLine = controlName : getMultiLine (), IsMultiLine = true,

Page 92: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

84

用 editControl::setMultiLine/1 谓词可以在程序中设置这个属性:

IsMultiLine = true, controlName : setMultiLine (IsMultiLine),

WantReturn

可以取值 True 或 False。

若为 True,用户在多行编辑控件的输入过程中按回车键时,会将之作为输

入编辑串的一部分。单行编辑控件这个属性无效。

若为 False,按回车键等同于按缺省键。

缺省值是 False。

用 editControl::getWantReturn/0->谓词可以查看控件这个属性:

IsWantReturn = controlName : getWantReturn (), IsWantReturn = true,

用 editControl::setWantReturn/1 谓词可以在程序中设置这个属性:

IsWantReturn = true, controlName : setWantReturn (IsWantReturn),

VScroll

可以取值 True 或 False。它规定了需要时多行控件是否会出现垂直滚动条。

单行的编辑控件这个属性无效。

对编辑控件缺省值是 True,对其它类型的控件缺省值是 False。

用 editControl::getVScroll/0->及 listControl::getVScroll/0->谓词可

以查看控件的这个属性:

IsVScrollSet = controlName : getVScroll (), IsVScrollSet = true,

用 editControl::setVScroll/1 及 listControl::setVScroll/0 谓词在程序

中可以设置这个属性:

IsVScrollSet = true, controlName : setVScroll (IsVScrollSet),

AutoVScroll

Page 93: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

85

可以取值 True 或 False。它规定了用户在多行控件 后一行按回车键时文

本是否自动上卷。单行的编辑控件这个属性无效。

缺省值是 False(不上卷)。

用 editControl::getAutoVScroll/0->谓词可以查看控件的这个属性值:

IsAutoVScrollSet = controlName : getAutoVScroll (), IsAutoVScrollSet = true,

程序中用 editControl::setAutoVScroll/1 可以设置这个属性的值:

IsAutoVScrollSet = true, controlName : setAutoVScroll (IsAutoVScrollSet),

HScroll

可以取值 True 或 False。它规定了需要时多行控件是否会出现水平滚动条。

单行的编辑控件这个属性无效。

缺省值是 False。

用 editControl::getHScroll/0->或 listBox::getHScroll/0->谓词可以查

看控件的这个属性值:

IsHScrollSet = controlName : getHScroll (), IsHScrollSet = true,

用editControl::setHScroll/1或listBox::setHScroll/1谓词在程序中可

以设置这个属性:

IsHScrollSet = true, controlName : setHScroll (IsHScrollSet),

AutoHScroll

可以取值 True 或 False。它规定了用户在多行控件行尾输入时文本是否自

动滾动以便显示输入的字符。如果是 False,则只能显示开始就在边框内的文本。

当按回车键时,控件将卷起所有文本回到零位。单行的编辑控件这个属性无效。

缺省值是 True(自动滚动文本)。

用 editControl::getAutoHScroll/0->谓词可以查看控件的这个属性:

IsAutoHScrollSet = controlName : getAutoHScroll (), IsAutoHScrollSet = true,

用 editControl::setAutoHScroll/1 谓词可以在程序中设置这个属性:

Page 94: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

86

IsAutoHScrollSet = true, controlName : setAutoHScroll (IsAutoHScrollSet),

Border

可以取值 True 或 False。它规定了控件创建时是否带边框。

缺省值是 False。

用 editControl::getBorder/0->或 listBox::getBorder/0->谓词可以查看

控件这个属性:

BorderIsSet = controlName : getBorder (), BorderIsSet = true,

用editControl::setBorder/1或listBox::setBorder/1谓词可以在程序中

设置这个属性:

BorderIsSet = true, controlName : setBorder (BorderIsSet),

Password

可以取值 True 或 False。如是 True,编辑控件会将所有输入的字符显示成

星号(*)。

缺省值是 False(按输入字符原样显示)。

用 editControl::getPassword/0->谓词可以查看控件的这个属性:

IsPassword = controlName : getPassword (), IsPassword = true,

用 editControl::setPassword/1 谓词可以在程序中设置这个属性:

IsPassword = true, controlName : setPassword (IsPassword),

HideSel

可以取值 True 或 False。如是 True,编辑控件会在失去焦点时隐藏选择而

在取得输入焦点时显示选择。

缺省值是 True(隐藏选择)。

用 editControl::getHideSel/0->谓词可以查看控件这个属性:

IsHideSel = controlName : getHideSel (), IsHideSel = true,

Page 95: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

87

用 editControl::setHideSel/1 谓词可以在程序中设置这个属性:

IsHideSel = true, controlName : setHideSel (IsHideSel),

ReadOnly

可以取值 True 或 False。如是 True,编辑控件将是只读模式的。

缺省值是 False(可编辑)。

用 editControl::getReadOnly/0->谓词可以查看控件这个属性:

IsReadOnly = controlName : getReadOnly (), IsReadOnly = true,

用 editControl::setReadOnly/1 谓词可以在程序中设置这个属性:

IsReadOnly = true, controlName : setReadOnly (IsReadOnly),

Case

取值可为 Insensitive、Upper、Lower。缺省值是 Insensitive。

Insensitive

规定编辑控件中的文本为输入原样。

Upper

编辑控件中的文本全部转换为大写。

用 editControl::getUpperCase/0->谓词可以查看控件这个属性值:

IsUpperCase = controlName : getUpperCase (), IsUpperCase = true,

用 editControl::setUpperCase/1 谓词可以在程序中设置这个属性值:

IsUpperCase = true, controlName : setUpperCase (IsUpperCase),

Lower

编辑控件中的文本全部转换为小写。

用 editControl::getLowerCase/0->谓词可以查看这个属性值:

Page 96: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

88

IsLowerCase = controlName : getLowerCase (), IsLowerCase = true,

用 editControl::setLowerCase/1 谓词可以在程序中设置这个属性值:

IsLowerCase = true, controlName : setLowerCase (IsLowerCase),

Sort

可以取值 True 或 False。如是 True,列表控件会将串按字母顺序排序。

缺省值是 True(排序)。

用 listControl::getSort/0->谓词可以查看控件这个属性:

IsSort = controlName : getSort (), IsSort = true,

用 listControl::setSort/1 谓词可以在程序中设置这个属性:

IsSort = true, controlName : setSort (IsSort),

ExtendedSel

可以取值 True 或 False。如是 True,在列表控件中可以用 Shift 键加鼠标

或 Shift 键加上下方向键选择多个项。

缺省值是 False(不能选择多项)。

用 listBox::getExtendedSel/0->谓词可以查看控件这个属性:

IsExtendedSel = controlName : getExtendedSel (), IsExtendedSel = true,

用 listBox::setExtendedSel/1 谓词可以在程序中设置这个属性:

IsExtendedSel = true, controlName : setExtendedSel (IsExtendedSel),

MultiSelect

可以取值 True 或 False。如是 True,在列表控件中允许用鼠标选择多个项。

缺省值是 False(不能选择多项)。

用 listBox::getMultiSelect/0->谓词可以查看控件的这个属性:

Page 97: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

89

IsMultiSelect = controlName : getMultiSelect (), IsMultiSelect = true,

用 listBox::setMultiSelect/1 谓词可以在程序中设置这个属性:

IsMultiSelect = true, controlName : setMultiSelect (IsMultiSelect),

AutoNotify

可以取值 True 或 False。如是 True,用户在列表控件中点击或双击时列表

控件会以一个输入消息通知其父窗口。

缺省值是 True(通知)。

用 listBox::getAutoNotify/0->谓词可以查看控件这个属性:

IsAutoNotify = controlName : getAutoNotify (), IsAutoNotify = true,

用 listBox::setAutoNotify/1 谓词可以在程序中设置这个属性:

IsAutoNotify = true, controlName : setAutoNotify (IsAutoNotify),

UseTabStops

可以取值 True 或 False。如是 True,列表控件写串时会识别和展开 TAB 字

符。

缺省值是 False。

用 control::getUseTabStops/0->谓词可以查看控件这个属性:

IsUseTabStops = controlName : getUseTabStops (), IsUseTabStops = true,

用 control::setUseTabStops/1 谓词可以在程序中设置这个属性:

IsUseTabStops = true, controlName : setUseTabStops (IsUseTabStops),

StaticScrollbar

可以取值 True 或 False。如是 True,列表控件中的项数未到需要滚动时会

显示一个禁止的垂直滚动条。如是 False,列表控件中的项数未到需要滚动时会

隐藏垂直滚动条。

缺省值是 True(显示垂直滚动条)。

Page 98: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

90

用 listControl::getStaticScrollbar/0->谓词可以查看控件这个属性:

IsStaticScrollbar = controlName : getStaticScrollbar (), IsStaticScrollbar = true,

用 listControl::setStaticScrollbar/1 谓词可以在程序中设置这个属性:

IsStaticScrollbar = true, controlName : setStaticScrollbar (IsStaticScrollbar),

AllowPartialRows

可以取值 True 或 False。如是 True,列表框的大小只能是应用程序创建它

时规定的大小。通常,Windows 会调整列表框的大小以避免显示不完整的情况。

缺省值对列表控件是 True 而对列表编辑控件和列表按钮是 False。

用 listControl::getAllowPartialRows/0->谓词可以查看控件这个属性:

IsAllowPartialRows = controlName : getAllowPartialRows (), IsAllowPartialRows = true,

用 listControl::setAllowPartialRows/1 谓词可在程序中设置这个属性:

IsAllowPartialRows = true, controlName : setAllowPartialRows (IsAllowPartialRows),

MultiColumn

可以取值 True 或 False。如是 True,列表控件可以有多列。

缺省值是 False。

用 listBox::getMultiColumn/0->谓词可以查看控件这个属性:

IsMultiColumn = controlName : getMultiColumn (), IsMultiColumn = true,

用 listBox::setMultiColumn/1 谓词可以在程序中设置这个属性:

IsMultiColumn = true, controlName : setMultiColumn (IsMultiColumn),

Rows

可取正整数。它规定了列表按钮或列表编辑控件打开显示的 大行数。

缺省值是 3。

Page 99: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

91

用 listControl::getMaxDropDownRows/0->谓词可以查看这个数:

MaxDropDownRowNumber = controlName : getMaxDropDownRows (),

用 listControl::setMaxDropDownRows/1 谓词可以在程序中设置这个数:

MaxDropDownRowNumber = 5, controlName : setMaxDropDownRows (MaxDropDownRowNumber),

Icon Name

图标名必须从工程中注册过的图标名称表中选取(点击 按钮)。为使图

标名出现在注册图标名称表中,应在工程文件中添加图标文件(IconName.ICO)。

可以用 File | Add 命令(要在文件类型中选择资源文件 Resource Files)来添

加图标文件。

Class

为用户控件指定 Windows 类的名称(应用程序必须用这个名称来注册该用户

控件)。

9.2.1.9. 编辑 VPI 控件的属性

要更改 VPI 包控件的属性,可以双击控件,或是选择控件后在 IDE 设计工具

的快速菜单(speed menu)中用 Control Attributes 命令打开控件属性表。

属性分两类。一类是所有控件通用的:Text 决定了控件的标题,Constant

(name)用于控件的标识,Control Size 确定控件的位置与大小等。

注意,有些控件中没有 Text 属性,比如滚动条。还要注意,在 Text 中,AND

符号(&)保留用于指示它后面一个字符加下划线。例如,一个控件命名时使用

文本串“E&xit”,则在运行时这个控件的标题就会显示为 Exit。这也就标明了

x是个加速键。如果在控件的 Text 栏中要显示&,可以使用&&。

另一类属性是某种控件特有的。

9.2.1.9.1. Push Button 的属性

Text

在 Text 输入框内可以输入要显示在按钮上的标题。这个文本中的一个字符

可以带下划线以标明其为热键。缺省文本是 Push Button。

Page 100: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

92

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_push_button)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_push_button,它是由对话框常数前 idc_及控件标题(取自 Text)

产生的,必要时还会后 序数。

Control Size

它们规定了按钮控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定按钮一创建后就是激活

的,而 wsf_Disabled 标志则规定按钮创建后是禁止的。缺省是 OFF

(wsf_Enabled)。

Invisible

该标志规定了 vpiDomains::wsf_Visible 或 vpiDomains::wsf_Invisible

标志。wsf_Visible 标志规定按钮一创建后就是可见的,而 wsf_Invisible 标志

则规定按钮创建后是隐藏的。缺省是 OFF(wsf_Visible)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

ClipSiblings

Page 101: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

93

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

Clip Siblings check 勾选框为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

Default

该标志确定是否置 vpiDomains::wsf_Default 标志。设有 wsf_Default 标志

的按钮为缺省按钮,其分配的常数值等同于 idc_ok,按回车键激活。缺省状态

是 OFF。

OwnerDraw

该标志确定是否置 vpiDomains::wsf_OwnerDraw 标志。wsf_OwnerDraw 标志

要求程序员提供控件的所有绘制例程。缺省状态是 OFF。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

9.2.1.9.2. Check Box 的属性

Text

在 Text 输入框内可以输入要显示为控件标题的文字。这个文本中的一个字

符可以带下划线以标明其为热键。缺省文本是 Check Box。

Constant

Page 102: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

94

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_check_box)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_check_box,它是由对话框常数前 idc_及控件标题(取自 Text)

产生的,必要时还会后 序数。

Control Size

它们规定了勾选框控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Style

Style 组的四个圆按钮可以确定勾选框控件的样式:

CheckBox

选此项时,规定该控件是普通勾选框,不带其它 vpiDomains::wsf_***标志。

AutoCheck Box

选此项时,附加 vpiDomains::wsf_Auto 标志,这个标志定义控件是自动勾

选框。

3State

选此项时,附加 vpiDomains::wsf_3State 标志,这个标志定义控件是三态

勾选框,除了选框可以变灰而外与普通勾选框是一样的。灰暗的状态用于表示选

框状态未确定。

Auto3State

选此项时,附加 vpiDomains::wsf_ Auto 3State 标志,这个标志定义控件

是三态自动勾选框。

Disabled

Page 103: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

95

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定勾选框一创建后就是激

活的,而 wsf_Disabled 标志则规定勾选框创建后是禁止的。缺省是 OFF

(wsf_Enabled)。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定勾选框一创建后就是可见的,而 wsf_

Invisible 标志则规定勾选框创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

Tab Stop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

Clip Siblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

Clip Siblings check 勾选框为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

Page 104: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

96

Owner Draw

该标志确定是否置 vpiDomains::wsf_OwnerDraw 标志。wsf_OwnerDraw 标志

要求程序员提供控件的所有绘制例程。缺省状态是 OFF。

Left Text

该标志规定是否置 vpiDomains::wsf_LeftText 标志,这个标志规定勾选框

的标题应位于其左侧。缺省是 OFF。

9.2.1.9.3. Custom 控件的属性

Text

Text 中可以输入用于用户定制控件的标题。缺省是 Custom。

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_Custom)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_Custom,它是由对话框常数前 idc_及控件标题(取自 Text)产生

的,必要时还会后 序数。

Class

指定用户定制控件的 Windows 类的名称(应用程序必须用这个名称注册该用

户定制控件)。

Control Size

它们规定了用户定制控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

Page 105: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

97

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定用户定制控件一创建后

就是激活的,而 wsf_Disabled 标志则规定用户定制控件创建后是禁止的。缺省

是 OFF(wsf_Enabled)。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定用户定制控件一创建后就是可见的,而

wsf_ Invisible 标志则规定用户定制控件创建后是隐藏的。缺省是 OFF(wsf_

Visible)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

Tab Stop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

Clip Siblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

Clip Siblings check 勾选框为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

Page 106: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

98

VertScroll

该标志规定是否置 vpiDomains::wsf_VScroll 标志,这个标志规定控件在需

要时会出现垂直滚动条。缺省是 OFF。

HorScroll

该标志规定是否置 vpiDomains::wsf_HScroll 标志,这个标志规定控件在需

要时会出现水平滚动条。缺省是 OFF。

Transparent

该标志规定是否置 vpiDomains::wsf_Transparent 标志,这个标志规定创建

的控件是透明的,也就是任何在它后面的窗口仍是可见的。

Border

该标志规定是否置 vpiDomains::wsf_NoBorder 标志,这个标志规定创建的

控件不带边框。

Native Flags

在这里可以指定一个列表,列出 Windows 原生控件标志的十六进制值。

9.2.1.9.4. Radio Button 的属性

Text

在 Text 输入框内可以输入要显示为控件标题的文字。这个文本中的一个字

符可以带下划线以标明其为热键。缺省文本是 Radio Button。

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_Radio_Button)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_ Radio_Button,它是由对话框常数前 idc_及控件标题(取自 Text)

产生的,必要时还会后 序数。

Control Size

Page 107: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

99

它们规定了圆按钮控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Style

Style 组中选项确定了创建的圆按钮样式

RadioButton

选此项,创建的是不带其它 vpiDomains::wsf_***标志的普通圆按钮。

AutoRadioButton

选此项规定附带 vpiDomains::wsf_Auto 标志,这个标志规定创建的圆按钮

属于一个自动圆按钮组。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定圆按钮一创建后就是激

活的,而 wsf_Disabled 标志则规定圆按钮创建后是禁止的。缺省是 OFF

(wsf_Enabled)。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定圆按钮一创建后就是可见的,而 wsf_

Invisible 标志则规定圆按钮创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

Page 108: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

100

Clip Siblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

Clip Siblings check 勾选框为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

LeftText

该标志规定是否置 vpiDomains::wsf_LeftText 标志,这个标志规定圆按钮

的标题应位于其左侧。缺省是 OFF。

OwnerDraw

该标志确定是否置 vpiDomains::wsf_OwnerDraw 标志。wsf_OwnerDraw 标志

要求程序员提供控件的所有绘制例程。缺省状态是 OFF。

9.2.1.9.5. Static Text 的属性

Text

在 Text 输入框内可以输入要显示为静态文本控件标题的文字。缺省文本是

Static text。

这个文本中的一个字符可以带下划线以标明其为热键。按热键后静态文本控

件本身当然不会得到焦点,但它可以和 TabStops标志的设置配合使用,把热键

指派给不支持分配热键的控件,如编辑控件、列表编辑、列表框、列表按钮、滚

动条等控件。这些控件没有自己的标题,也就无法指定热键字符。通常用这样的

方法给上述控件分配热键:在需要分配热键的控件前创建一个静态文本控件,在

它的属性中指定热键字符并置TabStop标志为ON;然后在该对话框规定的 Visit

Page 109: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

101

Order中将需要热键的控件序号紧接着排在静态文本控件序号之后。这样,当用

户按静态文本控件指定的热键时,焦点就会落在访问顺序指定的紧随静态文本控

件之后的控件上。

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_static_text)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_static_text,它是由对话框常数前 idc_及控件标题(取自 Text)

产生的,必要时还会后 序数。

Control Size

它们规定了静态文本控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定静态文本控件一创建后

就是激活的,这是缺省状态。而 wsf_Disabled 标志则规定静态文本控件创建后

是禁止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定静态文本控件一创建后就是可见的,而

wsf_ Invisible 标志则规定静态文本控件创建后是隐藏的。缺省是 OFF(wsf_

Visible)。

Clip Siblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

Page 110: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

102

Clip Siblings check 勾选框为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。按 TAB 键会将焦

点移到下一个设置了 wsf_TabStop 标志的控件上。因为静态文本控件无法接收焦

点,焦点就会接着移动到访问顺序表中指定的下一个控件上。这个特点也被用于

为自身无法分配热键的控件指定热键,如上述。

缺省状态是 OFF。

NoPrefix

该标志规定是否置 vpiDomains::wsf_NoPrefix 标志,这个标志会禁止将静

态文件控件 Text 内的&字符解释为热键的前 字符。这常用于要在静态文本控件

中显示文件名,而文件名又可能包含有&字符的情况下。

Style

Style 组中的选项确定了创建的静态文本控件的样式:

AlignLeft

选此项会置 vpiDomains::wsf_AlignLeft 标志,这个标志规定静态文本控件

中的文字要左对齐。缺省状态是 ON。

AlignCenter

选此项会置 vpiDomains::wsf_AlignCenter 标志,这个标志规定静态文本控

件中的文字要居中。缺省状态是 OFF。

AlignRight

Page 111: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

103

选此项会置 vpiDomains::wsf_AlignRight 标志,这个标志规定静态文本控

件中的文字要右对齐。缺省状态是 OFF。

LeftNoWordWrap

选此项会置 vpiDomains::wsf_NoWrap 标志,这个标志规定静态文本控件中

的文字左对齐,超出控件矩形的部分不会回绕而会切掉。缺省状态是 OFF。

Simple

选此项会置 vpiDomains::wsf_Simple 标志,这个标志规定静态文本控件中

的文字左对齐,控件矩形内显示单行文字,文本行不会被缩短,也不会有其它任

何改变。缺省状态是 OFF。

BlackRect

选此项会置 vpiDomains::wsf_BlackRect 标志,这个标志规定用绘制窗口边

框的颜色填充静态文本控件。在缺省的 Windows 调色板中这个颜色是黑色。缺省

状态是 OFF。

GrayRect

选此项会置 vpiDomains::wsf_GrayRect 标志,这个标志规定用填充屏幕背

景的颜色填充静态文本控件。在缺省的 Windows 调色板中这个颜色是灰色。缺省

状态是 OFF。

WhiteRect

选此项会置 vpiDomains::wsf_WhiteRect 标志,这个标志规定用填充窗口背

景的颜色填充静态文本控件。在缺省的 Windows 调色板中这个颜色是白色。缺省

状态是 OFF。

BlackFrame

选此项会置 vpiDomains::wsf_BlackFrame 标志,这个标志规定静态文本控

件带有用窗口边框的颜色绘制的边框。在缺省的 Windows 调色板中这个颜色是黑

色。缺省状态是 OFF。

GrayFrame

选此项会置 vpiDomains::wsf_GrayFrame 标志,这个标志规定静态文本控件

带有用屏幕背景(桌面)颜色绘制的边框。在缺省的 Windows 调色板中这个颜色

是灰色。缺省状态是 OFF。

WhiteFrame

Page 112: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

104

选此项会置 vpiDomains::wsf_WhiteFrame 标志,这个标志规定静态文本控

件带有用窗口背景颜色绘制的边框。在缺省的 Windows 调色板中这个颜色是白

色。缺省状态是 OFF。

9.2.1.9.6. Edit 控件的属性

Text

在Text输入框内可以输入要显示为编辑控件标题的文字。缺省文本是Edit。

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_edit)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_edit,它是由对话框常数前 idc_及控件标题(取自 Text)产生的,

必要时还会后 序数。

Control Size

它们规定了编辑控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定编辑控件一创建后就是

激活的,这是缺省状态。而 wsf_Disabled 标志则规定编辑控件创建后是禁止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定编辑控件一创建后就是可见的,而 wsf_

Invisible 标志则规定编辑控件创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

Group

Page 113: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

105

该标志规定了要不要vpiDomains::wsf_Group标志。wsf_Group标志标记相关

组控件的起止。缺省是ON。勾选后,这个标志表明开始一个新的相关控件组,所

有在它之后的没有wsf_Group标志的控件(按访问顺序)都是这个组的相关控件。

下一个带有wsf_Group标志的控件结束这个组(并开始一个新组)。在一个控件

组内,用户可以用方向键由一个控件移到下一个控件。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

VertScroll

该标志规定是否置 vpiDomains::wsf_VScroll 标志,这个标志规定控件在需

要时会出现垂直滚动条。缺省是 OFF。当 Multi Line 勾选后会变为 ON。

HorScroll

该标志规定是否置 vpiDomains::wsf_HScroll 标志,这个标志规定控件在需

要时会出现水平滚动条。缺省是 OFF。当 Multi Line 勾选后会变为 ON。

AutoVScroll

它规定是否置 vpiDomains::wsf_AutoVScroll 标志。置此标志后,在 后一

行按回车时多行编辑控件将自动上卷文本。缺省是 OFF,当 Multi Line 勾选后

会变为 ON。

AutoHScroll

它规定是否置 vpiDomains::wsf_AutoHScroll 标志。置此标志后,在行尾输

入字符时多行编辑控件将自动卷动文本以便显示输入的内容。如果不使用这个样

式,则只能输入填满边框数量的字符。按回车键时控件会卷动全部文本回到零位。

缺省是 ON。

ClipSiblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

ClipSiblings 可选如下三种状态之一:

Undetermined(缺省)

Page 114: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

106

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

NoBorder

它规定是否置 vpiDomains::wsf_NoBorder 标志。这个标志规定控件不要边

框。缺省是 OFF。

MultiLine

它规定是否置 vpiDomains::wsf_MultiLine 标志。设置这个标志的编辑控件

是一个多行的编辑控件。缺省是 OFF。如果勾选(ON),它还会使 Vert Scroll、

Hor Scroll、Auto VScroll 及 Want Return 也变为勾选的。

Password

它的 OFF 或 ON 确定了是否设置 vpiDomains::wsf_Password 标志。置这个标

志,编辑控件会将输入的所有字符显示为星号(*)。缺省是 OFF。

NoHideSel

它的 OFF 或 ON 确定了是否设置 vpiDomains::wsf_NoHideSel 标志。置这个

标志,编辑控件表现就和缺省情况不一样了,缺省时控件失去输入焦点时会隐藏

选择而得到焦点后又会显示选择。缺省是 OFF。

WantReturn

它的 OFF 或 ON 确定了是否设置 vpiDomains::wsf_WantReturn 标志。置这个

标志,用户在多行编辑控件的输入过程中按回车键时,会将之作为输入编辑串的

一部分。如果不使用这个样式,按回车等同于按缺省(OK)按钮。缺省是 OFF,

如果勾选了 Multi Line(ON)则会变为 ON。

ReadOnly

它的 OFF 或 ON 确定了是否设置 vpiDomains::wsf_ReadOnly 标志。置这个标

志的编辑控件是只读的。缺省是 OFF。

Alignment

Page 115: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

107

这组选项决定了编辑控件的文字如何对齐:

Left (<)

选此项会置 vpiDomains::wsf_AlignLeft 标志,它规定编辑框内的文字要左

对齐。缺省是 ON。

Center (=)

选此项会置 vpiDomains::wsf_AlignCenter 标志,它规定编辑框内的文字要

居中。缺省是 OFF。

Right (>)

选此项会置 vpiDomains::wsf_AlignRight 标志,它规定编辑框内的文字要

右对齐。缺省是 OFF。

Case

Insensitive

此项为 ON 时编辑控件显示的文字大小写是按输入原样显示的。此时没有附

加的 vpiDomains::wsf_***标志。缺省是 ON。

Upper

此项为 ON 时置 vpiDomains::wsf_UpperCase 标志,编辑控件显示的文字全

部转换为大写显示。缺省是 OFF。

Lower

此项为 ON 时置 vpiDomains::wsf_ LowerCase 标志,编辑控件显示的文字全

部转换为小写显示。缺省是 OFF。

9.2.1.9.7. List Box 的属性

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_PropertiesLB)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

Page 116: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

108

名,如 idc_aboutDialog,它是由对话框常数前 idc_及对话框标题产生的,必

要时还会后 序数。

Control Size

它们规定了控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定列表框控件一创建后就

是激活的,这是缺省状态。而 wsf_Disabled 标志则规定列表框控件创建后是禁

止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定列表框控件一创建后就是可见的,而

wsf_ Invisible 标志则规定列表框控件创建后是隐藏的。缺省是 OFF(wsf_

Visible)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

ClipSiblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

Page 117: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

109

ClipSiblings 可选为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

HorScroll

该标志规定是否置 vpiDomains::wsf_HScroll 标志,这个标志规定控件在需

要时会出现水平滚动条。缺省是 OFF。

VertScroll

该标志规定是否置 vpiDomains::wsf_VScroll 标志,这个标志规定控件在需

要时会出现垂直滚动条。缺省是 ON。

NoBorder

它规定是否置 vpiDomains::wsf_NoBorder 标志。这个标志规定控件不要边

框。缺省是 OFF。

ExtendedSel

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_ExtendedSel 标志,若置此

标志则允许用 Shift 键及鼠标或特定组合键进行多项选择。缺省是 OFF。

UseTabStops

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_UseTabStops 标志,置此标

志允许该控件识别和展开串中的 TAB 字符,缺省的 TAB 占位为 32 个对话框基本

单位。缺省是 OFF。

DisableNoScroll

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_DisableNoScroll 标志,置

了这个标志后该控件在没有足够多的项时会显示一个禁止的垂直滚动条。如果不

用这个样式,没有充足的项时垂直滚动条是隐藏的。缺省是 OFF。

Page 118: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

110

NoIntegralHeight

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_NoIntegralHeight 标志,置

了这个标志的列表框大小始终是创建时规定的尺寸。通常,Windows 会调整列表

框大小以避免显示不完整的情况。缺省是 OFF。

MultiSelect

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_MultiSelect 标志,置了这

个标志可以在列表框中选择多个项。缺省是 OFF。

Sort

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_Sort 标志,置了这个标志的

列表框控件要按字母顺序对串排序。缺省是 OFF。

NoNotify

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_NoNotify 标志,置了这个标

志的控件无论用户什么时候在控件内单击或双击时不会向父窗口发出输入消息

提示。缺省是 OFF。

MultiColumn

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_MultiColumn 标志,置了这

个标志的控件是多列的。缺省是 OFF。

OwnerDraw

这里决定了列表框控件是否是自绘制控件:

No

选此项规定了该列表框控件是个普通控件,不附带 vpiDomains::wsf_***标

志。

OwnerDraw

此项为 ON 时规定置 vpiDomains::wsf_OwnerDraw 标志,这个标志表示程序

员必须提供该控件的绘制处理例程。缺省是 OFF。

OwnerDrawVariable

选此项规定置 vpiDomains::wsf_OwnerDrawVariable 标志,它明确了列表框

所有者负责绘制其内容且项的高度是可变的。列表框创建时所有者窗口会收到框

Page 119: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

111

中各项的 vpiDomains::e_OwnerMeasureItem 消息,列表框外观变化时还会收到

vpiDomains::e_OwnerDrawItem 消息。缺省是 OFF。

HasStrings

选此项规定置 vpiDomains::wsf_HasStrings 标志,它表明列表框中含有由

串构成的项。缺省情况下除自绘制列表框外都是这个样式。应用程序可以创建是

或不是这个样式的自绘制列表框。缺省是 OFF。

9.2.1.9.8. List Button 的属性

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_aboutDialog)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_aboutDialog,它是由对话框常数前 idc_及对话框标题产生的,必

要时还会后 序数。

Control Size

它们规定了控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定该控件一创建后就是激

活的,这是缺省状态。而 wsf_Disabled 标志则规定控件创建后是禁止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定该控件一创建后就是可见的,而 wsf_

Invisible 标志则规定控件创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

Group

Page 120: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

112

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

ClipSiblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

ClipSiblings 可选为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

VertScroll

该标志规定是否置 vpiDomains::wsf_VScroll 标志,这个标志规定控件在需

要时会出现垂直滚动条。缺省是 ON。

NoIntegralHeight

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_NoIntegralHeight 标志,置

了这个标志的列表按钮大小始终是创建时规定的尺寸。通常,Windows 会调整列

表按钮大小以避免显示不完整的情况。缺省是 OFF。

DisableNoScroll

Page 121: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

113

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_DisableNoScroll 标志,置

了这个标志后该控件在没有足够多的项时会显示一个禁止的垂直滚动条。如果不

用这个样式,没有充足的项时垂直滚动条是隐藏的。缺省是 OFF。

Sort

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_Sort 标志,置了这个标志的

列表按钮控件要按字母顺序对串排序。缺省是 OFF。

Owner Draw

这里决定了列表按钮控件是否是自绘制控件:

No

选此项规定了该列表按钮控件是个普通控件,不附带 vpiDomains::wsf_***

标志。

OwnerDraw

此项为 ON 时规定置 vpiDomains::wsf_OwnerDraw 标志,这个标志表示程序

员必须提供该控件的绘制处理例程。缺省是 OFF。

OwnerDrawVariable

选此项规定置 vpiDomains::wsf_OwnerDrawVariable 标志,它明确了列表按

钮所有者负责绘制其内容且项的高度是可变的。列表按钮创建时所有者窗口会收

到框中各项的 vpiDomains::e_OwnerMeasureItem 消息,列表框外观变化时还会

收到 vpiDomains::e_OwnerDrawItem 消息。缺省是 OFF。

HasStrings

选此项规定置 vpiDomains::wsf_HasStrings 标志,它表明列表框中含有由

串构成的项。缺省情况下除自绘制列表框外都是这个样式。应用程序可以创建是

或不是这个样式的自绘制列表框。缺省是 OFF。

9.2.1.9.9. List Edit 的属性

Text

在 Text 框内输入要显示在列表编辑控件中的文字。缺省是 List Edit。

Constant

Page 122: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

114

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_list_edit)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_list_edit,它是由对话框常数前 idc_及 Text 产生的,必要时还

会后 序数。

Control Size

它们规定了控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定该控件一创建后就是激

活的,这是缺省状态。而 wsf_Disabled 标志则规定控件创建后是禁止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定该控件一创建后就是可见的,而 wsf_

Invisible 标志则规定控件创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

ClipSiblings

Page 123: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

115

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

ClipSiblings 可选为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

VertScroll

该标志规定是否置 vpiDomains::wsf_VScroll 标志,这个标志规定控件在需

要时会出现垂直滚动条。缺省是 ON。

NoIntegralHeight

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_NoIntegralHeight 标志,置

了这个标志的控件大小始终是创建时规定的尺寸。通常,Windows 会调整列表编

辑控件大小以避免显示不完整的情况。缺省是 OFF。

DisableNoScroll

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_DisableNoScroll 标志,置

了这个标志后该控件在没有足够多的项时会显示一个禁止的垂直滚动条。如果不

用这个样式,没有充足的项时垂直滚动条是隐藏的。缺省是 OFF。

Sort

它的 OFF 或 ON 决定了是否置 vpiDomains::wsf_Sort 标志,置了这个标志的

控件要按字母顺序对串排序。缺省是 OFF。

AutoHScroll

它规定是否置 vpiDomains::wsf_AutoHScroll 标志。置此标志后,在行尾输

入字符时控件将自动卷动文本以便显示输入的内容。如果不使用这个样式,则只

Page 124: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

116

能输入填满边框数量的字符。按回车键时控件会卷动全部文本回到零位。缺省是

ON。

Owner Draw

这里决定了该控件是否是自绘制控件:

No

选此项规定了该控件是个普通控件,不附带 vpiDomains::wsf_***标志。

OwnerDraw

此项为 ON 时规定置 vpiDomains::wsf_OwnerDraw 标志,这个标志表示程序

员必须提供该控件的绘制处理例程。缺省是 OFF。

OwnerDrawVariable

选此项规定置 vpiDomains::wsf_OwnerDrawVariable 标志,它明确了列表框

所有者负责绘制其内容且项的高度是可变的。控件创建时所有者窗口会收到框中

各项的 vpiDomains::e_OwnerMeasureItem 消息,列表框外观变化时还会收到

vpiDomains::e_OwnerDrawItem 消息。缺省是 OFF。

HasStrings

选此项规定置 vpiDomains::wsf_HasStrings 标志,它表明列表框中含有由

串构成的项。缺省情况下除自绘制列表框外都是这个样式。应用程序可以创建是

或不是这个样式的自绘制列表框。缺省是 OFF。

9.2.1.9.10. Scroll Bar Attributes

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_aboutdialog)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_aboutdialog,它是由对话框常数前 idc_及对话框标题产生的,必

要时还会后 序数。

Control Size

Page 125: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

117

它们规定了控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定该控件一创建后就是激

活的,这是缺省状态。而 wsf_Disabled 标志则规定控件创建后是禁止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定该控件一创建后就是可见的,而 wsf_

Invisible 标志则规定控件创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

ClipSiblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

ClipSiblings 可选为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

Group

该标志规定了要不要 vpiDomains::wsf_Group 标志。wsf_Group 标志标记相

关组控件的起止。缺省是 ON。勾选后,这个标志表明开始一个新的相关控件组,

所有在它之后的没有 wsf_Group 标志的控件(按访问顺序)都是这个组的相关控

Page 126: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

118

件。下一个带有 wsf_Group 标志的控件结束这个组(并开始一个新组)。在一个

控件组内,用户可以用方向键由一个控件移到下一个控件。

TabStop

该标志确定是否置 vpiDomains::wsf_TabStop 标志。wsf_TabStop 标志明确

了控件属于一个组,在这个组中的控件可以用 TAB 键逐一访问。缺省状态是 ON。

9.2.1.9.11. Group Box 的属性

Text

在Text框内输入作为标题显示在该控件边框上方的文字。缺省是GroupBox。

Constant

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_GroupBox)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_GroupBox,它是由对话框常数前 idc_及该控件标题(Text 中的内

容)产生的,必要时还会后 序数。

Control Size

它们规定了控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定该控件一创建后就是激

活的,这是缺省状态。而 wsf_Disabled 标志则规定控件创建后是禁止的。

Invisible

Page 127: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

119

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定该控件一创建后就是可见的,而 wsf_

Invisible 标志则规定控件创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

ClipSiblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

ClipSiblings 可选为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

9.2.1.9.12. Icon 控件的属性

Icon

图标名称必须从工程中注册过的图标名称列表中选择(点击 按钮)。要

使一个图标名出现在注册的图标名称列表中,应先将该图标文件(IconName.ICO)

添加到工程文件中。可以使用 File | Add 命令(在 Files of Type 中应该选择

Resource Files)添加图标文件。

Edit

点击Edit按钮将调出图形编辑器(Graphics editor),可以对图标进行编

辑。

Constant

Page 128: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

120

在 Constant 输入框内可以选择或输入作为该控件标识的符号常数。可以直

接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合法的符号常

数(如 idc_aboutDialog)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。IDE Designer 自动生成缺省的符号常数

名,如 idc_aboutDialog,它是由对话框常数前 idc_及对话框标题产生的,必

要时还会后 序数。

Control Size

它们规定了控件的位置和大小:

X - 控件左上角的 X坐标(以对话框基本单位度量)。 Y - 控件左上角的 Y坐标(以对话框基本单位度量)。 Width - 控件的宽度(以对话框基本单位度量)。 Height - 控件的高度(以对话框基本单位度量)。

Disabled

该标志规定了附加的 vpiDomains::wsf_Enabled 或

vpiDomains::wsf_Disabled 标志。wsf_Enabled 标志规定该控件一创建后就是激

活的,这是缺省状态。而 wsf_Disabled 标志则规定控件创建后是禁止的。

Invisible

该标志规定了附加的 vpiDomains::wsf_ Visible 或 vpiDomains::wsf_

Invisible 标志。wsf_ Visible 标志规定该控件一创建后就是可见的,而 wsf_

Invisible 标志则规定控件创建后是隐藏的。缺省是 OFF(wsf_ Visible)。

ClipSiblings

该标志规定了 vpiDomains::wsf_ClipSiblings 或

vpiDomains::wsf_NoClipSiblings 标志。缺省状态是 Undetermined(未定)。 当

规定了wsf_ClipSiblings标志时,控件交迭时要裁切。规定wsf_NoClipSiblings

标志时则与 wsf_ClipSiblings 标志相反。

ClipSiblings 可选为如下三种状态之一:

Undetermined(缺省)

VPI自己确定wsf_ClipSiblings或 wsf_NoClipSiblings以正确刷新对话框

或窗口中的控件。

Unchecked

Page 129: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

121

同属窗口可以相互在对方的区域内显示(wsf_NoClipSiblings)。

Checked

同属窗口位于子窗口内的部分将被裁去(wsf_ClipSiblings)。

9.2.1.10. 对话框调整时用锚点定位 GUI 控件

VPI 控件属性只有其绝对位置与尺寸,因此含有 VPI 控件的 VPI 对话框或窗

口在调整尺寸时不会改变其中的 VPI 控件的位置与大小!

GUI 控件与之不同,它还有一个 Anchor 属性,可以用来在包含 GUI 控件的

GUI 对话框(或表单)调整大小时对 GUI 控件重新定位(及调整大小)。

每个 GUI 控件有四个锚点属性:Left Anchor、Top Anchor、Right Anchor

及 Bottom Anchor。锚点的功能是规定指定方向(左、顶、右、底)上控件边与

对话框(表单) 近的边(相应边)应当始终保持指定的距离。

各锚点可有 True 或 False 的值。为 True 时该锚点是激活的(用于相应控件

的定位)。

例如,当激活 Left Anchor 时(其取值为 True),控件的左边应当与对话

框(表单) 近的边(左边)保持指定的距离。

看控件锚点哪个是激活的很简单,选择该控件,就会看到控件的边与对话框

的边之间出现一些红色箭头,有箭头表明相应锚点已激活。如,控件顶到对话框

顶的箭头,表示 Top Anchor 是激活的。下面的图中可以看到三个箭头,表示 Push

Button 控件顶锚点、左锚点和右锚点都是激活的。

箭头边上的数字表示控件与对话框相应边之间(按对话框基本单位度量)的

距离。

一般情况下,控件会有一个水平和一个垂直的锚点被激活,对话框调整大小

时,这样的控件会始终与对话框相应边保持规定的距离而控件本身的大小不变。

当控件的两个水平(或/及二个垂直)锚点都被激活,则控件的两个水平边

(或/及二个垂直边)都要与对话框相应的边保持规定的距离。这样一来,调整

对话框大小时这类控件也会调整自身大小以保持相应的边距。

Page 130: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

122

如果控件水平(或垂直)锚点没有一个是激活的,则与对话框相应的水平(或

垂直)边距就不受约束。这类控件的坐标是按比例来处理的。比如,对话框宽度

增加了 D个对话框基本单位,控件的 X坐标也会增加,但没有那么大,它只增加

D/2 个对话框基本单位。

9.2.1.11. Cut,Copy 和 Paste,Undo 和 Redo

可以将一组选定的控件剪贴或拷贝到 Windows 剪贴板中,再从剪贴板中粘贴

控件到对话框。撤消和重做命令用于删除或恢复在对话框中 后的编辑操作。

9.2.1.12. Grid

菜单(或弹出式菜单)Resource | Grid 项激活时,或是在工具箱中点击

按钮,会出现下面的对话框:

Grid 属性对话框

有网格的地方排布控件比较方便,还可以设置 IDE 设计工具 Snap to Grid,

以便将控件放在网格点上得到较好的效果。

在 Dialog/Window/Form 编辑器中使用网格

Page 131: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

123

9.2.1.13. Test Mode

IDE 设计工具中有 Test Mode,以方便查看带有控件的对话框的效果。为了

演示,Test Mode 会为控件指定一些缺省值。可以从 Resource 菜单(或弹出式

菜单)中激活和取消测试模式。

测试模式下的一个对话框

9.2.1.14. Tab Stops

菜单(或弹出式菜单)的 Resource | Tabstops 项可以规定控件是否能用

TAB 键访问。激活这个项,会在控件上出现带有+或-的小按钮,表示控件有或无

TAB 逗留点。点击小按钮会改变有无逗留点的设置。

要退出逗留点模式,只需要在控件外对话框任意处点击就行。

Page 132: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

124

9.2.1.15. Visit Order

在对话框中指定了 TAB 逗留点后,还可以规定其顺序

显示访问顺序

要改变访问顺序,点击控件上带有访问顺序号的小按钮,出现如下对话框,

在其中可以修改访问顺序:

修改访问顺序

要退出访问顺序模式,只需要在控件外对话框任意处点击就行。

9.2.1.16. Speed Menu

在 IDE 设计工具中,可以右击鼠标键激活快速菜单,从这个菜单中可以方便

地调用任意 IDE 设计工具的命令:

Page 133: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

125

IDE 设计工具的快速菜单

9.2.2. 创建和编辑窗口

9.2.2.1. 创建新窗口

只能在图形用户接口的工程中(也就是使用 Conventional GUI (pfc/vpi)

类型用户接口策略的工程中)创建窗口。使用 Object-oriented GUI (pfc/gui)

类型用户接口策略的工程要代之以表单。(参见帮助文件PFC部分的GUI包概述)。

Page 134: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

126

要在工程中创建和注册一个新窗口,可以使用 File | New 菜单命令。在接

下来打开的 Create Project Item 对话框中,应当选择 vpi Window,如上图。

Name

在 Name 栏中输入窗口的名称,这个名称在自动为该窗口生成的代码中会与

这个窗口联系在一起。名称可以是字母、数字及下划线的组合并以字母开头。这

个名称还用于生成的处理该窗口的文件的名称,这些文件会出现在工程窗口的工

程树中。代码生成工具(Code Expert)生成处理该窗口的谓词名称时也会用到

这个名称

Package

选择 New Package 或 Existing Package 以规定生成的处理该窗口的资源文

件及类是放在新创建的包中还是放在已有的包中

如果选 New Package,需要在后面的 Parent Directory 栏输入相应的目录,

在上图中是 TaskWindow\。包及窗口处理文件创建后会放在这个指定的目录中。

如果选 Existing Package,要在接下来出现的包列表中选择一个工程已知

的包(上图中是 TaskWindow.pack)。处理创建窗口的文件将包括在这个指定的

包中,而创建的文件会放在所选包的子目录里。这个子目录的名称显示在包名称

之后(上图中是 TaskWindow\)。

做好所有选择之后按 Create 按钮,这时会出现 Window Attributes 对话框。

Page 135: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

127

9.2.2.2. Window Attributes 对话框

这个对话框中有:

Title

运行时这栏里规定的文字会显示为窗口的标题。

Type

这里规定窗口类型是 Top Level Window 还是 Child Window。前者可有相关

的菜单条,选它时会激活 Menu 列表项,可以从中选择分配给窗口的菜单。后者

是出现在其它窗口中的窗口。

Style Flags

这组标志决定窗口的外观。勾选的项,相应的窗口样式标志常数就会添加到

该窗口的描述中。这些常数会出现在属性名之后,比如 Titlebar 的对应窗口样

式标志是 vpiDomains::wsf_TitleBar。

TitleBar (vpiDomains::wsf_TitleBar)

勾选此项的窗口会有标题条。

Page 136: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

128

CloseBox (vpiDomains::wsf_Close)

勾选此项的窗口会有关闭按钮。如果没有勾选 TitleBar,此项无效。

MaximizeBox (vpiDomains::wsf_Maximize)

勾选此项的窗口会在标题条上有一个 大化按钮。如果没有勾选 TitleBar,

此项无效。如果不希望调整窗口尺寸就不要勾选此项。

Minimize Box (vpiDomains::wsf_Minimize)

勾选此项的窗口会在标题条上有一个 小化按钮。如果没有勾选 TitleBar,

此项无效。如果不希望调整窗口尺寸就不要勾选此项。

Invisible (vpiDomains::wsf_Invisible)

勾选此项的窗口首次打开时是不可见的。

Disabled (vpiDomains::wsf_Disabled)

勾选此项的窗口首次打开时是禁止的(灰色的)。

Transparent (vpiDomains::wsf_Transparent)

勾选此项的窗口是透明的。也就是说,任何在这个窗口之下的窗口都会是可

见的。用这个样式创建的窗口,只有在它之下所有同属窗口都更新了之后,才会

接收到 vpiDomains::e_Update 事件消息。

ClipSiblings (vpiDomains::wsf_ClipSiblings)

勾选此项规定两个同父窗口(重叠时)要剪裁(重叠部分)。

ClipChildren (vpiDomains::wsf_ClipChildren)

勾选此项规定绘制重叠的任意子窗口时要剪裁(重叠部分)。

Maximized (vpiDomains::wsf_Maximized)

勾选此项的窗口一开始按 大化显示。

Minimized (vpiDomains::wsf_Minimized)

勾选此项的窗口一开始按 小化显示。

VertScrollbar (vpiDomains::wsf_VScroll)

Page 137: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

129

勾选此项的窗口会有一个垂直滚动条。

HorizScrollbar (vpiDomains::wsf_HScroll)

勾选此项的窗口会有一个水平滚动条。

TopMost (vpiDomains::wsf_Topmost)

勾选此项的窗口始终在所有非置顶窗口之上,哪怕它是禁止状态也这样。

vpiDomains::wsf_Topmost 只对下列两类窗口有效:

• 任务窗口(vpiDomains::w_Task),

• SDI 模式下,父窗口是桌面(屏幕)的顶窗口(vpiDomains::w_Toplevel)。

Window Border

在此列表按钮框里可以选择窗口的如下边框:

• Size Border - (vpiDomains::wsf_SizeBorder)窗口边框是双线的,可

以调整窗口大小,

• Thin Border - (vpiDomains::wsf_Border)单线窗口,不能调整大小,

• Dialog Border - (vpiDomains::wsf_DlgBorder)窗口边框与对话框相

似,不能调整大小,

• No Border - (vpiDomains::wsf_NoBorder)窗口不要边框。

Position Size

这两项可以确定窗口的位置与大小。坐标值以像素为单位。

Code

这一组选项用于指定程序源代码如何处理窗口。

Menu

用 Menu 列表单选择已在工程注册的菜单分配给该窗口。通常是 TaskMenu。

如果窗口不需要菜单,应该选 No MenuBar。

Assigned Pop up Menus

用 Add 和 Delete 按钮可以为该窗口分配已有的菜单用作弹出菜单。

Assigned Toolbars

Page 138: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

130

用 Add 和 Delete 按钮可以为该窗口分配已有工具箱。

Class Name

在这个只读控件中可以看到 IDE 自动生成处理该窗口的接口(及类)的名称。

Update Code

按这个按钮,对该窗口所作的更动就要在 IDE 维护的窗口处理代码中进行更

新。相应的文件会加载到文本编辑器,光标会置于自动处理代码的起始处。

Code Expert

这个按钮会打开 Dialog and Window Expert。窗口选择了菜单或工具箱会

要用到这个工具。首次打开 Window Attributes 对话框时它是禁止的。

选好了需要的属性后,可以点击 OK,这将在当前工程中创建一个新窗口。

随便什么时候,都可以重新激活 Window Attributes 对话框(可以使用任务菜单

命令 Resource | Attributes... 或用弹出菜单中的 Attributes...)来更改该

窗口的属性。

9.2.2.3. 编辑窗口

要编辑某个窗口,可以在工程树中双击该窗口描述文件名(或选择该文件后

按回车,窗口描述文件的扩展名是.WIN)。这时,IDE 设计工具会打开要编辑的

窗口。

尽管所有对话框都带有控件,但很多窗口仅用于绘制。不过,还是可以利用

IDE 设计工具给窗口添加控件。虽然 VPI 样式的对话框描述通常是放在可执行文

件的资源段,但窗口通常都是在调用 vpi::winCreateDyn 的代码中创建的

在 IDE 设计工具中编辑窗口与编辑对话框差不多,仅有的差别是窗口编辑中

没有 TAB 逗留点及访问顺序,这两项只用于对话框与表单。

9.2.3. 创建和编辑表单

9.2.3.1. 创建新表单

只要是图形用户接口的工程,不管是 Conventional GUI (pfc/vpi)或是

Object GUI (pfc/gui)用户接口策略的,都可以创建表单(Form)。对比一下,

窗口,则只能在使用 Conventional GUI (pfc/vpi) 类型用户接口策略的工程中

创建。

Page 139: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

131

在工程中创建并注册新表单,可以用 File | New 菜单命令。在接着出现的

Create Project Item 对话框中选择 Form,如下图示:

Name

在 Name 栏中输入表单的名称,这个名称在自动为该表单生成的代码中会与

这个表单联系在一起。名称应该使用正确的 Visual Prolog 名称,可以是字母、

数字及下划线的组合并以字母开头。这个名称还用于生成的处理该表单的文件的

名称,这些文件会出现在工程窗口的工程树中。代码生成工具(Code Expert)

生成处理该表单的谓词名称时也会用到这个名称。

Package

选择 New Package 或 Existing Package 以规定生成的处理该表单的资源文

件、接口及类是放在新创建的包中还是放在已有的包中

如果选 New Package,需要在后面的 Parent Directory 栏输入相应的目录,

在上图中是 TaskWindow\。包及表单处理文件创建后会放在这个指定的目录中。

如果选 Existing Package,要在接下来出现的包列表中选择一个工程已知

的包(上图中是 TaskWindow.pack)。处理创建表单的文件将包括在这个指定的

包中,而创建的文件会放在所选包的子目录里。这个子目录的名称显示在包名称

之后(上图中是 TaskWindow\)。

Page 140: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

132

做好所有选择之后按 Create 按钮,这时会出现 Form Attributes 对话框。

9.2.3.2. 表单属性对话框

Form Properties 中的项目有:

Title

这里的文字运行时会显示为该表单的标题。

Style Flags

这些项确定了表单的外观。选中时相应的属性就会回到表单描述文件中。

TitleBar

Page 141: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

133

此项置为 true 时为选中,规定表单有一个标题条。

CloseBox

此项置为 true 时为选中,规定表单有关闭按钮。如果没有选中 TitleBar,

此项无效。

MaximizeBox

此项置为 true 时为选中,规定表单有 大化按钮。如果没有选中 TitleBar,

此项无效。如果不希望窗口大小被调整则不要选择此项。

Minimize Box

此项置为 true 时为选中,规定表单有 小化按钮。如果没有选中 TitleBar,

此项无效。如果不希望窗口大小被调整则不要选择此项。

Visible

此项置为 true 时为选中,规定表单首次打开时是不可见的。

Enabled

此项置为 true 时为选中,规定表单首次打开时是禁止的(灰色的)。

ClipSiblings

此项置为 true 时为选中,规定表单和其它同父窗口(重叠时)要剪裁(重

叠部分)。

ClipChildren

此项置为 true 时为选中,规定绘制在任何子窗口的部分要剪裁掉。

Minimized

此项置为 true 时为选中,规定表单一开始显示时要 小化。

VertScrollbar

此项置为 true 时为选中,规定表单有垂直滚动条。

HorizScrollbar

此项置为 true 时为选中,规定表单有水平滚动条。

Page 142: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

134

Form Border

在此列表按钮框里可以选择表单的如下边框:

• Size Border – 表单边框是双线的,可以调整表单大小,

• Thin Border – 表单边框是单线的,不能调整大小,

• Dialog Border – 表单边框与对话框相似,不能调整大小,

• No Border – 表单不要边框。

Position Size

这些项可以确定表单的位置与大小。坐标值以像素为单位。

Code

这一组选项用于指定程序源代码如何处理表单。

Menu

用 Menu 列表单选择已在工程注册的菜单分配给该表单。通常是 TaskMenu。

如果表单不需要菜单,应该选 No MenuBar。

Assigned Toolbars

用 Add 和 Delete 按钮可以为该表单分配已有工具箱。

Font

在这里可以选择表单控件中使用的字模。如果选择 Set Form Font,Font

按钮就可以在标准的字模对话框中选择要用的字模。编辑时选择的字模是看不到

的,可以用 Resource | Test Mode 命令来查看表单显示效果。操作系统会规定

对话框基本单位的大小,这与字模的尺寸有关。但位图与图标尺寸是不会受此影

响的。要注意,不要使用程序的运行环境中可能不存在的字模。

选好了需要的属性后,可以点击 OK,这将在当前工程中创建一个新表单。

随便什么时候,都可以重新激活 Form Attributes 对话框(可以使用任务菜单命

令 Resource | Attributes... 或用弹出菜单中的 Attributes...)来更改该表

单的属性。

9.2.3.3. 编辑表单

要编辑某个表单,可以在工程树中双击该表单描述文件名(或选择该文件后

按回车,表单描述文件的扩展名是.FRM)。这时,IDE 设计工具会打开要编辑的

表单,可以给表单添加控件或进行其它编辑操作。

Page 143: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

135

在 IDE 设计工具中编辑表单与编辑对话框差不多。

9.3. 工具箱编辑器

工具箱编辑器可用于交互地创建各类工具箱。

9.3.1. 创建工具箱

要在工程中创建并注册新的工具箱,可使用File | New菜单命令打开Create

Project Item 对话框,在其中选择左边的 Toolbar 项。如下图示。

9.3.1.1. 新工具箱对话框

Name

在 Name 栏中输入工具箱的名称,这个名称在自动为该工具箱生成的代码中

会与这个工具箱联系在一起。名称应该使用正确的 Visual Prolog 名称,可以是

字母、数字及下划线的组合并以字母开头。这个名称还用于生成的处理该工具箱

的文件的名称,这些文件会出现在工程窗口的工程树中。代码生成工具(Code

Expert)生成处理该工具箱的类时也会用到这个名称。

Page 144: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

136

Package

选择 New Package 或 Existing Package 以规定生成的处理该工具箱的资源

文件及类是放在新创建的包中还是放在已有的包中

如果选 New Package,需要在后面的 Parent Directory 栏输入相应的目录,

在上图中是 TaskWindow\。包及工具箱处理文件创建后会放在这个指定的目录

中。

如果选 Existing Package,要在接下来出现的包列表中选择一个工程已知

的包(上图中是 TaskWindow.pack)。处理创建工具箱的文件将包括在这个指定

的包中,而创建的文件会放在所选包的子目录里。这个子目录的名称显示在包名

称之后(上图中是 TaskWindow\)。

做好所有选择之后按 Create 按钮,这时会出现 Form Attributes 对话框。

9.3.1.2. Toolbar Attributes 对话框

做好所有选择之后按Create按钮,这时会出现Toolbar Attributes对话框。

这里对工具箱的设置有:

Style

有多种工具箱样式。由于工具箱的排布只不过是各控件的顺序变化,所以改

变工具箱样式很容易。工具箱有如下样式:

Page 145: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

137

样式 位置

Top 置于窗口顶部

Left 置于窗口左边

Bottom 置于窗口底部

Right 置于窗口右边

Inside 置于窗口内固定位置(图形编辑器就用了几个这样的样式)

Movable 浮动工具箱,用户可随意移动它

试试各种不同布局的工具箱样式看看。

Title

设置工具箱的标题。只有 Movable 样式的工具箱这个项才是可用的。

Position

表示工具箱位置。当选择 Inside 或 Movable 样式时可以设置工具箱位置。

Code

这里有只读控件 Class Name 和 Update Code 按钮。

Class Name

这里可以看到 IDE 存放该工具箱缺省代码的类名称。

Update Code

点击此键可以强制代码更新。

点击 OK 后将创建一个新工具箱,其名称会添加为当前工程已有工具箱。随

便什么时候,都可以重新激活 Toolbar Attributes 对话框(可以使用任务菜单

命令 Resource | Attributes... 或用弹出菜单中的 Attributes...)来更改该

工具箱的属性。

9.3.2. 编辑工具箱

要编辑某个工具箱,可以在工程树中双击该工具箱描述文件名(或选择该文

件后按回车)。这时,会呈现出工具箱编辑器窗口,可以进行需要的编辑操作。

Page 146: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

138

工具箱编辑器

上图中可以看到正在被编辑的工具箱(图中的 ProjectToolbar)。

9.3.2.1. 控件工具箱

前面那个图中还可以看到下边有 Controls toolbar(控件工具箱),可以

用它方便地在当前编辑的工具箱中添加控件。

9.3.2.2. 工具箱中的控件类型

控件工具箱中包含了所有可以在工具箱中使用的控件。

控件 描述

按钮 标准的按钮,按它会向父窗口发出 vpiDomains::e_Menu 事件消息。

按钮用的位图需要注册。

选项钮 它表示某属性两种状态之一:选择或是没选择。按它会向父窗口发

出 vpiDomains::e_Control(_, vpiDomains::wc_CheckBox,_,_)事

件消息。应注册它所用的位图。

列表钮 列表钮用于选择一些值中的某一项。按它会向父窗口发出

vpiDomains::e_Control(_, vpiDomains::wc_LBoxButton,_,_)事

件消息。

静态文本 控件中的文字可以初始化时放置,也可动态放置。常用它作标题。

关联文本 若工具箱中放置它,鼠标置于控件上会显示该控件的帮助信息。

分隔符 分隔符类似空格,用小竖线分隔控件,通常用于划分控件功能组。

新行 只能在 Inside 和 Movable 样式中使用,它会使其后的控件排在另

一行。

Page 147: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

139

9.3.2.3. 工具箱的布局

可以用键盘也可以用鼠标编辑工具箱的布局。一个有颜色的小短线指示出插

入点,它可以用方向键移动,或是用鼠标点击新的位置。定位后,短线右边的控

件可以用 Delete 键删除,而左边的控件可以用 Backspace 键删除。

为将新控件在插入点上放置,可以:

• 从 Controls 菜单中选择需要的项或

• 从浮动的 Controls 对话框中选择需要的控件或

• 在工具箱编辑器窗口中工具箱外点击鼠标右键,从弹出菜单中选择控件。

9.3.2.4. 工具箱控件的属性

插入控件后,只需双击该控件就可以更改它的属性。

9.3.2.4.1. 按钮及选择钮的属性

双击按钮或选择钮后会出现按钮 Button Attributes 属性对话框,如下图所

示。

指定按钮、选择钮属性

Page 148: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

140

可以指定的内容如下:

Constant 标识该按钮控件的常数名。vpiDomains::e_Menu 事件

将使用这个名称,因此建议使用与该菜单项内容相对

应的名称。

在 Constant 输入框内可以选择或输入作为该控件

标识的符号常数。可以直接输入也可以(点击 按钮)

在可用的常数表中选取。必须使用合法的符号常数(如

idt_file_open)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到

resourceidentifiers.i 文件中并为其生成一个合适

的整数值。Toolbar Editor 自动生成缺省的符号常数

名,如 idt_7,它是由工具箱常数前 idt_及此控件

在工具箱中的序号产生的。

Status Text 这里可以输入由分号分隔的两个子串。前一个用于该

按钮的提示,后一个(若规定了一个子串也是此功能)

用于关联文本。

如串“ New;New file”,New 会显示为黄色的工具提

示而当鼠标置于该按钮时会显示关联文本 New file 。

Checked 如果选此项,该按钮初始状态就是“按下的”,相应

地图标显示也是“按下的”。反之,初始状态就是“抬

起的”,图标显示也是“抬起的”。

Disabled 如果选此项,该按钮初始状态是不可用的(暗灰色)。

反之,按钮是可用的,初始状态由 Checked 项确定。

Push Button

Check Button

选择相应的按钮样式(Push Button 或 Check Button)。

样式可以随时改变。运行时,选择钮的状态(按下的

或抬起的)可以通过点击该钮来改变。

Bitmap Name 这个位图用于显示按钮。位图必须从已经在工程中注

册过的位图中选择(点击 钮)。要在工程中注册位

图,可以用 File | Add 命令(Files of Type 项必须

选择 Resource Files)。

Visual Prolog v.7 中一个按钮只用一个位图,对位图

会自动加以修饰以区分抬起、按下及禁止等状态。

Edit 按 Edit 钮会调出 Graphics editor(图形编辑器)打

开指定的位图以便查看与编辑。

Page 149: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

141

9.3.2.4.2. 文本控件的属性

双击静态文本或关联文本控件会出现 Text Attributes 对话框:

指定工具箱中文本控件的属性

可以指定的内容如下:

Constant 标识该文本控件的常数名称。

Initial Text 初始显示的缺省文本。

Static 或

Context Sensitive

选择相应的文本控件类型。可以随时更改。

Font 选择文本显示的字模(字模名称、样式、大小等)。

Text Width 确定文本控件的宽度(按象素计)。可以手工输入,也

可以按“|<---Text--->|”钮。使用后者时会按所选字

模显示 Initial Text 文本进行优化设置。

Foreground Color 选择显示文本的前景色。

9.3.2.4.3. 列表钮的属性

双击列表钮控件会出现 List Button Attributes 对话框:

Page 150: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

142

指定工具箱中列表钮的属性

它只有两个参数:

Constant 标识该列表钮控件的常数名称。

Width 确定列表钮控件的宽度(按象素计)。

9.4. 菜单编辑器

Menu Editor 即可创建窗口中使用的下拉式菜单,也可创建弹出式菜单。后

者在面向对象用接口中特别有用。

9.4.1. 创建菜单

要在工程中创建并注册新的菜单,可使用 File | New 菜单命令打开 Create

Project Item 对话框,在其中选择左边的 Menu 项。如下图示。

Page 151: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

143

9.4.1.1. 创建新菜单

需要指定如下内容:

Name

在 Name 栏中输入菜单的名称,这个名称在自动为该菜单生成的代码中会与

这个菜单联系在一起。名称应该使用正确的 Visual Prolog 名称,可以是字母、

数字及下划线的组合并以字母开头。这个名称还用于存放该菜单描述的文件名称

(扩展名是.mnu),这些文件会出现在工程窗口的工程树中。

Parent Directory

在 Parent Directory 栏内需要输入父目录名(上图中是 TaskWindow\)。

菜单资源文件会放在所选的目录中。

9.4.1.2. 菜单的属性

点击 Create 钮后会出现 Menu Attributes 对话框,如下图示。

Page 152: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

144

点击 OK 后将创建一个新菜单,其名称会添加到当前工程已有菜单列表中。

随便什么时候,都可以重新激活 Menu Attributes 对话框(可以使用任务菜单命

令 Resource | Attributes... 或用弹出菜单中的 Attributes...)来更改该菜

单的属性。

Constant

这个列表编辑框中可以修改缺省的菜单资源常数(如上图的 id_mymenu)。

这个菜单标识必须是在整个工程中唯一的。

Resourse File

在这个只读项中可以看到保存创建的菜单资源的文件名称。

9.4.2. 编辑菜单

要编辑某个菜单,可以在工程树中双击该菜单描述文件名(或选择该文件后

按回车)。这时,会呈现出菜单编辑器窗口,可以进行需要的编辑操作。

菜单编辑器

Page 153: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

145

菜单编辑器可以修改、删除已有的菜单项,也可以添加菜单项。它的主要部

分是被编辑菜单(上图中是 TaskMenu)的菜单项树状结构。

标题条下的工具条中,按 钮可以创建新的首项,按 钮可以创建新的下

一项,按 钮可以创建菜单新的子项。菜单项可以分组并用分隔符分开,按

钮可以插入分隔符。

菜单项(包括其所有子项)的 Cut、Copy 和 Paste 操作分别可以用 Ctrl+X、

Ctrl+C 和 Ctrl+V 键盘操作完成。

菜单下还可以有菜单,要创建某个菜单项下的子菜单,只需要选定该项后按

钮。

按 钮可以进入测试模式,此时会显示被编辑的菜单而不是 IDE 的主菜单,

可以打开菜单项及子菜单查看。只要在被测菜单外 IDE 窗口内任意处点击鼠标就

可以退出测试模式。

9.4.2.1. 定制菜单项的属性

菜单编辑窗口下半部显示有菜单项的树状结构。菜单项前有 图标的表示其

有子菜单,点击 图标可以展开子菜单。子菜单展开的项其前的图标变为 。

可以选择树状结构中的菜单项,菜单编辑器会显示出该项的属性。可以规定

的属性如下述。

9.4.2.1.1. 项的标题

点击树上的菜单项可以选择该项,选择后再点击菜单项标题就会变为下图所

示状态:

在框内可以对菜单项标题(菜单项名称)进行编辑。

• 菜单项的名称 多可以有 255 个字符,其中可以包含\t (tab)换码序

列。

• 菜单项名称中,&符号可以用来指定其后的字符带下划线。例如,若

输入串&Contents,则运行时该菜单项将显示为 Contents 。通常,

Page 154: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

146

这也意味着指出 C 是个加速键。带下划线的字符在同一级菜单中应该

是唯一的。如果需要显示&符号本身,可以使用&&。

9.4.2.1.2. Item Constant

项常数输入框Item Constant内可以选择或输入作为该菜单项标识的符号常

数。可以直接输入也可以(点击 按钮)在可用的常数表中选取。必须使用合

法的符号常数(如 id_help_contents)或是整数值。

如果输入的是符号常数名,IDE 会自动将其放入到 resourceidentifiers.i

文件中并为其生成一个合适的整数值。Menu Editor 自动生成缺省的符号常数名,

如 id_file_exit,它是由常数前 id_file 及菜单项标题产生的。

9.4.2.1.3. Constant Prefix

常数前 Constant Prefix编辑控件中可以输入要用作菜单中本级所有菜单

项的项常数前 。

9.4.2.1.4. Checked

设置该菜单项的初始状态是已经选择的。

9.4.2.1.5. Disabled

设置该菜单项的初始状态是已经禁止的。

9.4.2.1.6. Accelerator

在快捷键 Accelerator 组框中的这些选项,可以设置激活该菜单项的热键。

它可以是快捷键与 Shift、Ctrl、Alt 等键的组合键构成。基本快捷键可以键入

也可以在列表中选取。需要与 Shift、Ctrl、Alt 等键的组合则勾选相应的选框。

要给一个菜单项分配多个快捷键,可以使用 vpi::setAccelerators/1 谓词。

9.4.2.1.7. Help Constant

在这个列表钮控件中可以选择已有的一级菜单项常数。带有该常数的

Windows(系统处理的)菜单项(MDI 模式下)将放置在一级菜单项之前。

Page 155: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

147

这个项只能应用于 MDI 应用程序,非 MDI 程序会忽略此项,因为非 MDI 程序

中没有 Windows(系统处理的)菜单项。

9.4.2.2. 编辑 Windows 的子菜单

MDI 应用程序窗口中自动添加了 Windows 的一级菜单项,缺省情况下是放在

所有用户创建的一级菜单项之后( 右边)。该菜单缺省时包括有 Tile、Cascade、

Arranfe Icons 菜单命令,菜单的下部还列出了所有打开的 MDI 文件窗口的标题。

要定制 Windows 子菜单的项,应当使用项常数 mdiwindow_menu 创建新子项。

在菜单中只能有一层菜单项。由于用户定制的子菜单将替代缺省的 Windows 子菜

单,所有菜单命令的处理都要显式地编程,比如,要在定制的菜单中包括 Tile、

Cascade、Arranfe Icons 等菜单命令,就需要为处理这些菜单项编程。

9.5. 图形编辑器

9.5.1. 概述

图形编辑器是创建、查看及编辑图标、光标和小图片的便利工具。图形可以

传给 Windows 剪贴板或保存在文件中。

图形编辑器可以处理的图片大小为 4x4 到 64x64 像素,可以使用 16 色或单

色灰度调色板。

用于图标、光标及小图片的图形编辑器是由工程窗口中调用的。如果在工程

中注册了大图像,Visual Prolog 会调用 Windows 指定的处理.BMP 文件的外部图

形编辑器。

打开图形编辑器后,会出现如下图所示的图形编辑器窗口:

Page 156: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

148

在工程中创建一个新图片,需要指定图片的名称、工程中标识该图片的常数

(资源 ID)、保存该图片的文件名称、图片大小、使用多少种颜色等。

9.5.2. 图形编辑器的菜单

图形编辑器激活后,IDE 菜单条中的 Resource 菜单中有图形编辑器的子菜

单,如下图所示。

图形编辑器激活时 Visual Prolog 的菜单条

菜单中有两个菜单项:Set Mirror Style 和 Set Cursor Hotspot,还有两

个子菜单:Tools 和 Move。Edit 菜单及 File 菜单中的项也针对图形编辑器做了

适应性的变化。

9.5.3. 创建新图片(位图、光标或图标)

在工程中创建并注册新图片(位图、光标或图标)需要使用 File | New 菜

单项。在打开的对话框中选择需要创建的图片类型。下图是选择创建位图时的示

例。

Page 157: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

149

9.5.3.1. 创建新图片对话框

创建新的位图

在对话框中需要指定以下内容:

Name

在 Name 栏中输入图片的名称,这个名称在自动为该图片生成的缺省代码中

会与这个图片联系在一起。名称应该使用正确的 Visual Prolog 名称,可以是字

母、数字及下划线的组合并以字母开头。这个名称就是将创建的图片名称,它还

用于图片文件的名称,会出现在工程窗口的工程树中。

Parent Dirctory(原文错为 Package)

在这里选择存放图片文件的包及目录。

9.5.3.2. 图片属性对话框

在前面的对话框中按 Create 钮后会出现图片属性对话框。位图、光标或图

标的对话框各有些差别,如下面三幅图片所示。

Page 158: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

150

创建新位图时的属性对话框

创建新图标时的属性对话框

创建新光标时的属性对话框

点击 OK 按钮后就会创建新的图片,其名称也会添加到工程已有图片中。

在这些属性对话框中只能修改 Constant 属性,Name 和 File 不能修改。

Name

Page 159: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

151

这里的 Name 使用的是前面创建新图片对话框中规定的名称,在此不可修改。

File

这里是带有相对工程根目录的路径及文件名,图片就将保存在这个文件中。

文件名是由 IDE 自动产生的,不可修改。

Constant

它用于在程序中标识该图片。图片标识在整个工程中必须是唯一的。可以直

接由键盘输入,也可以让 IDE 创建一个缺省值。常数缺省值为:

图片类型 Constant

Bitmap 位图 idb_<bitmap_name>

Icon 图标 idi_<icon_name>

Cursor 光标 idc_<cursor_name>

Constant 必须是合法的符号常数(如 idb_MyBitmap)或是整数值。如果是

符号常数名,IDE 会自动将其放入到 resourceidentifiers.i 文件中并为其生成

一个合适的整数值。图形编辑器会自动为工程中相同名称的图片后 序数。

对图标及光标来说只有上述的属性。对位图还有如下属性:

Width 和 Height

指定位图按像素计算的宽度与高度。 大值为 64。只能对位图指定图片的

大小。图形编辑器可以创建、编辑 4x4 到 64x64 像素大小的位图。图标及光标图

片大小固定为 32x32。

Colors

这里可以指定位图和图标使用 16 色还是灰度单色。光标只有黑色及透明的

背景色两种颜色。

9.5.4. 编辑图片属性

可以随时用 Resource | Attribute 任务菜单项或弹出菜单的 Attribute 项

调出 Bitmap/Cursor/Icon 属性对话框查看及修改相应的图片属性。

注意,已有位图的属性对话框与创建时显示的略有不同,如下图示:

Page 160: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

152

已有位图的属性对话框

这里没有了宽度、高度及颜色的属性内容。能修改的只有 Constant。

Constant

可以在这里修改缺省的图片资源常数(上图中的 idb_mybitmap)。

9.5.5. 图形编辑器窗口

编辑图片时图形编辑器窗口如下图示:

图形编辑器窗口

这个窗口分为几个区域,各自有不同的功能或包含了一些不同用途的工具。

Page 161: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

153

9.5.5.1. 图形编辑器标题条

图形编辑器窗口的标题条用于显示图片类型(图标、光标或位图)、图片像

素大小、使用颜色、当前打开编辑的图片文件名等信息。

例如,标题 ProjectIcon.ico Size 32*32 Colors:16 说的是:

• 当前图片类型是图标;

• 图片大小是 32*32 像素;

• 图片中可以使用 16 种颜色;

• 图片文件名是 ProjectIcon.ico。

9.5.5.2. 图片区域

图形编辑器窗口中部是图片区域。

图片区域的内容

在图片区域中可以看到当前编辑的放大了的图片。区域中的每个小方格表示

实际显示时的一个像素。水平与垂直方向上小方格的数量在标题条中有显示。方

格线可以显示,也可以关闭。

9.5.5.3. 图像屏

图片区域右边的图像屏可以看到背景色下当前编辑图片以实际大小显示的

情况。可以改变背景色观查不同环境下的图片。

Page 162: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

154

9.5.5.4. Icon

图片区域底下有 Icon 下拉列表:

在这里可以选择当前文件中的图标加载到图形编辑器中进行编辑。

9.5.5.5. 移动工具箱(移动、旋转、翻转图片)

图片区域右边图像屏之下有一个图片工具箱点击相应的按钮可以移动、旋转

或翻转图片。

移动工具箱

按钮 按钮名称 描述

左转移 图片各像素左移一个像素位置,超出 左边的像素移动到图片 右边

右转移 图片各像素右移一个像素位置,超出 右边的像素移动到图片 左边

上转移 图片各像素上移一个像素位置,超出顶边的像素移动到图片底部

下转移 图片各像素下移一个像素位置,超出底边的像素移动到图片顶部

左旋转 绕图片中心逆时针旋转图片 90 度

右旋转 绕图片中心顺时针旋转图片 90 度

水平翻转 绕垂直轴翻转图片

垂直翻转 绕水平轴翻转图片

在 Resource | Move 菜单中含有与工具箱作用相同的命令。

Page 163: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

155

9.5.5.6. 调色板

图形编辑器窗口上部是如下图所示的调色板。

调色板

调色板可以选择颜色作如下绘制操作:

• 设置绘制和编辑的颜色

• 设置背景色

• 设置(相对于背景的)反转色

9.5.5.7. 颜色模式工具箱

在图像屏下方可以看到颜色模式工具箱:

颜色模式工具箱

这个工具箱用于设置:

• 绘制与编辑的颜色

• 背景色

• 相对于背景的反转色

9.5.5.8. 绘制与编辑工具箱(使用工具绘制与编辑)

图形编辑器窗口中图片区域的左边是绘制与编辑工具箱。它包括了绘制与编

辑所使用的主要工具,如下图示:

Page 164: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

156

绘制与编辑工具箱

这些工具使得创建图片非常简单方便。这里的工具也可在 Resource | Tools

菜单中激活。

9.5.5.9. 绘制与编辑工具

点击工具箱中的按钮可以选择需要的绘制编辑工具。工具简要描述如下表。

按钮 按钮名称 描述

笔 笔可以在图片区域对各个像素着色,也可以进行徒手绘制。

刷子 刷子与笔的作用一样,但它的作用区域大。刷子的样式可以在图

形编辑器窗口右下角的 Brush Style 中选择。可供选择的有

Small、Big 和 Star 。

橡皮擦 要擦除图片中某个部分(等效于用 Screen 色绘制),可以使用

这个工具。橡皮擦的大小可以在图形编辑器窗口右下角的 Eraser

Style 中选择。可供选择的有 Small 和 Big。

颜色橡皮擦 它可以擦掉指定颜色的像素而对其它像素没有影响。

填充颜料 对有闭合的边界的区域着色, 方便的办法就是使用这个工具。

只要把鼠标放在要着色的区域中,点击,区域内部就填充上了指

定的颜色。

镜像 可以使用这个工具创建对称的图片。它按不同对称轴设置镜像。

要选择需要的对称轴,可以使用任务窗口菜单中的Resource |

Set Mirror Style菜单命令。

线 在图片中任意两点间画线。

Page 165: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

157

画矩形 画矩形,按住鼠标左键拖动,再释放鼠标键,就可画出矩形。

画椭圆 画椭圆形,按住鼠标左键拖动,再释放鼠标键,就可画出椭圆形。

输入文字 这个工具用于在图片中插入文字。在图片区域需要插入文字的地

方点击鼠标,可以看到出现的文字光标,表示出文字的高度和插

入起点。输入文字时使用的是当前选择的颜色及字模。要重新选

择字模,可以按 Ctrl+F 键进行设置。文字仍在选择状态时,可

以点击新位置重新设置起点。

区域 这个工具可以在图片区域中划出一个矩形部分,用于剪裁、拷贝

或移动。点击这个按钮后在图片区域中拖动鼠标划出需要的部

分。然后对这块标记出的部分可以拖移到需要的地方。如果要把

标记出的部分拷贝到别的地方,可以按住 Ctrl 键进行拖动。标

记出区域后:

• Edit|Cut 或 Edit|Copy(主菜单中的,或是 IDE 工具箱

中的 Cut 及 Copy 按钮,或是标准组合键 Ctrl+X 及

Ctrl+C)可以把标记部分粘贴到剪贴板;

• Edit|Paste(Paste 工具箱按钮或组合键 Ctrl+V)剪贴

板中的图像放入标记区域中;

• 可以使用粘贴与缩放工具。

注意

使用 Edit|Paste 时,图像块会显示在图片区域的左上角,可以

用鼠标把这个图像块移到其它的位置。

粘贴与缩放 图像拷贝到剪贴板后,用这个按钮可以把它放到其它标记出的区

域中。只有当剪贴板中有图像且已经标记了一个区域时这个按钮

才可用。

清图片区域 要清除图片区域可以使用这个按钮。清除后位图的图片区域会变

成白色而光标与图标的区域会变成透明色。

更改选择的

颜色

用这个按钮可以把具有指定颜色的所有像素颜色改变为另一种

颜色。这两种颜色需要用 Color 和 Alt-Color 事先设置好。

注意

用Inverse工具着色的背景色或反转色像素不会被这个工具改变

颜色。

反转颜色 这个按钮用于反转图像所有的颜色。已经是背景色或背景色的反

转色的那些像素,颜色不会改变。

网格 这个按钮可以打开或关闭图片区域中的网格

Page 166: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

158

9.5.5.10. Mirror Style 对话框

镜像样式对话框可以用任务窗口菜单中的 Resource | Set Mirror Style 菜

单命令激活:

Mirror Style 对话框

这个对话框用于选择镜像工具用的对称轴。

镜像工具 可以设置光标拖尾点相对不同对称轴的镜像点。

在编辑图像中某个位置放置鼠标光标并点击左键时,称为设置光标拖尾点。

使用镜像工具,可以设置 8种光标拖尾点的镜像。镜像按勾选的类型绘制,

这些类型有:

Main -> Trial

勾选此项将绘制点击的光标拖尾点。

Main -> Reverse

勾选此项将绘制反相的点击光标拖尾点。

Reflect -> Horizontal

勾选此项将绘制点击光标拖尾点的水平镜像。

Reflect -> Vertical

勾选此项将绘制点击光标拖尾点的垂直镜像。

Orthogonal -> Left

Page 167: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

159

勾选此项将绘制向左旋转 90 度的点击光标拖尾点。

Orthogonal -> Right

勾选此项将绘制向右旋转 90 度的点击光标拖尾点。

Reflect Diagonal -> Left

勾选此项将绘制相对于图片左上角到右下角对角线对称的点击光标拖尾点。

Reflect Diagonal -> Right

勾选此项将绘制相对于图片右上角到左下角对角线对称的点击光标拖尾点。

9.5.6. 使用工具与颜色

9.5.6.1. 设置颜色

9.5.6.1.1. 设置绘制与编辑的颜色

绘制编辑工具所用的颜色,可以选择下面四种之一:

选择了 color 模式的颜色模式工具箱

所选择的颜色将用于绘制。可以点击调色板选择一个新的颜色。

color 及 alt-color 可以用于所有的绘制操作,而 screen(或透明)及

inverse 则对不同类型图片有特殊用途。

注意:

调色板中有 16 种颜色,所有这些颜色都可以在图片区域使用。

9.5.6.1.2. 设置背景色

要看图片在不同颜色背景或透明情况下(让背景透出)的效果,可以使用

screen 选项。

Page 168: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

160

背景色使用 screen 模式

要改变背景色,先要选择 screen,然后可以调出调色板选择需要的颜色。

图像屏中的背景色、图像中指定为背景色(透明)的部分以及颜色模式工具箱中

screen 的色块都将变为新选择的颜色。

9.5.6.1.3. 位图、光标及图标中 screen 色的使用

图像 Screen 颜色

位图 用于设置周围区域的颜色

光标及图标 用于设置透明像素及周围区域的颜色

9.5.6.1.4. 设置(相对于背景的)反转色

使用反转色(inverse color)可以方便地烘托图像或着色图像中需要与背

景色形成对比的像素。

反转色应使用 inverse 模式

9.5.6.1.5. 位图光标及图标中反转色的使用

图片 反转色

位图 不能使用

光标与图标 用于指定需要与背景形成反差的像素

9.5.6.2. 理解颜色

9.5.6.2.1. 位图中的颜色

Visual Prolog 的图形编辑器可以创建双色或 16 色的位图。位图中的每个

像素点的颜色不能是 inverse 色,也不能是 screen 色。

Page 169: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

161

9.5.6.2.2. 光标中的颜色

光标中的每个像素可以是下述四种色值之一:

光标 颜色效果

Black 黑 像素是黑色的

White 白 像素是白色的

Inverse 反转 像素颜色是原来颜色的反转色

Screen 屏幕 像素是透明的,保留原来的颜色

为了便于理解,可以创建一个有四个小区域的光标,每个小区域用上述四个

值中的一个。然后,用 Resources | Tools | Test Cursor,看看其中的现象。

在这个被测试的光标中,左上区是着色是 color,左下区着色是 inverse。

把光标放在这些网格上就能看出 inverse 的效果。

9.5.6.2.3. 图标中的颜色

图标可以是双色的也可以是 16 色的,除此之外每个像素也可以用 screen

色和 inverse 色。

9.5.6.2.4. 设置光标热点

设计光标时,菜单项 Resource | Set Cursor Hotspot 可以打开一个对话

框,如下图示:

Page 170: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

162

给光标定义热点

只要这个对话框打开,就可以为光标指定热点像素。光标的这个热点像素将

决定当鼠标移动时屏幕像素哪个有反应,哪个要上报。

9.5.6.3. 测试光标

设计光标时,可以用 Resource | Tools | Test Cursor 菜单项来观查新设

计的光标实际效果。

9.5.6.4. Undo / Redo

图形编辑器与其它编辑器一样支持 Edit|Undo 及 Edit|Redo 操作。

Page 171: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

163

10. IDE 代码工具

Visual Prolog IDE 中有如下几个代码工具:

• Project Settings (工程设置),它生成应用程序所有缺省代码、资源

及 make 脚本。它还处理工程设置上的修改变更。

• Dialog and Window Expert(对话框与窗口专家系统),它用于生成创建

和使用对话框、窗口及表单类资源的 Prolog 源代码。

• Source Browser(源浏览器),用于搜索查看当前编辑工程中使用的 Visual

Prolog 名称。搜索可以在工程所有注册过的文件中进行。

• Insert feature(插入要素),它能简化在编辑源代码过程中插入标准

Visual Prolog 程序元素的工作。

使用对话框与窗口专家系统有好处也有些缺点。主要的缺点是它插入了一些

额外的注释以便以后定位源代码。而优点则有:

1. 节省了大量输入工作,

2. 处理过程标准化,别人好懂,

3. 自己知道自己应用程序的用户接口,通过这个工具选择用户接口部件可以

很容易地定位源代码。

用户接口部件的布局或属性更动后,对话框与窗口专家系统可以自动更新源

代码。自动更新的部分总是在如下注释包围内:

% This code is maintained by the IDE. Do not update it manually .... %由 Dialog and Window Expert 处理的一些代码 % end of automatic code

10.1. Dialog and Window Expert

对话框与窗口专家系统是一个工具,它与窗口、对话框、表单及 IDE 控件布

局的 Visual Prolog 代码相关。设计好对话框或窗口后,可以用这个工具生成窗

口及对话框创建和事件处理所必需的 Visual Prolog 代码。

当焦点在 IDE 设计工具中时,可以在鼠标弹出菜单中选择 Code Expert 命令

(或是在菜单中选择这个命令,还可以使用 Ctrl+Shift+W 组合键)激活对话框

与窗口专家系统。当焦点在工程窗口中并且选择了窗口或对话框类型的资源文件

时,也可以激活对话框与窗口专家系统。其它情况下 Code Expert 命令是不可用

的,试图使用它时 IDE 会提示说:所选择的文件与对话框、窗口、表单或 IDE

控件没有关联。

被选择的对话框或窗口文件显示在对话框与窗口专家系统的标题行上,下图

中的文件是 TaskWindow。

Page 172: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

164

Dialog and Window Expert.

图中上边一行有三个圆按钮: All、 Handled 和 Unhandled。选择某个按

钮可以决定在窗口的中部要显示哪些类型的事件:

All

显示对话框或窗口的所有事件。

Handled

只显示由相应监听器或响应器捕捉(处理)的事件。对所处理的事件可以看

到监听器或响应器的名称。如在上图中的:

Show->onShow

它表示对于 Show 事件其监听器的名称是 onShow。

Unhandled

仅显示没有用监听器或响应器捕捉(处理)的事件。

Page 173: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

165

在这个工具窗口的中间部分,可以看到该对话框或表单所具有的事件树。它

是对话框或表单可能产生的所有事件,因而对于具体某个对话框/窗口来说它可

能包含了些不会出现的事件。例如,某个对话框没有滚动条,它的监听器就不会

接收 HScroll 和 VScroll 消息,但事件树中仍然会显示它们。

Handled (处理的)事件用绿勾 标记,而 Unhandled(未处理的)事件用

蓝点 标记。

注意:对于谓词 generatedInitialize 来说其代码是 100%地自动由工具维

护的,一定不要人工修改这个谓词的内容,因为编译时所有人工修改都会被覆盖。

在上图中部可以看到如下一些事件组:

Window

这些是对话框/窗口作为一个整体的相关事件。

Menu

这组事件只在表单中存在,来自于表单中的菜单。

Scroll Bar

这些事件是与对话框/窗口的滚动条相关的。注意,这些事件与放在对话框/

窗口中的滚动条控件没有关系,滚动条控件的事件在 Control 事件组中。

Control

这些事件来自于放在对话框/窗口中的控件。

Key

这组事件只在窗口中存在,是键入事件。

Mouse

这些事件来自于鼠标。

Miscellaneous

这些事件是那些无法归入前几类中的一些杂项事件,如计时器事件、会话结

束事件等等。

在 Window、Menu、Scroll Bar、Control、Key、Mouse 及 Miscellaneous

节点前会有 或 图标,点击图标可以展开或收起相应的节点树。

Page 174: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

166

工具中还有两个按钮 Add/Delete 和 Set:

Add / Delete

如果在事件树中选择了一个为 Unhandled 的事件,这个按钮显示为 Add。按

此按钮可以增加该事件处理子句,同时生成事件处理谓词所必需的声明与定义。

如果在事件树中选择了一个为 Handled 的事件,这个按钮显示为 Delete。

按此按钮可以删除事件处理子句。

Set

只在选择的事件是 Handled 的此按钮才可用。注意 Handled 事件显示为:

Show->onShow

在->符号之后可以看到(用于事件 onShow 的)事件处理谓词的名称 onShow。使

用 Set 按钮可以改变这个名称(如改为 onShowMy)。相应地,会生成新监听器

onShowMy 的子句。但对话框与窗口专家系统不会删除或改变先前监听器 onShow

的代码。

要注意,选择了 Unhandled 的事件时 Set 按钮是不可用的。尽管如此,还是

可以在编辑控件中输入想要使用的监听器名称,按 Add 按钮后这个名称就会替代

缺省的名称用于监听器。

Page 175: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

167

10.2. 源浏览器

10.2.1. 概述

这个工具的主要用途是在多个文件中搜索工程使用的 Visual Prolog 名称。

显示在这个工具窗口中的信息是编译器在编译工程文件时生成的。编译器把

“浏览”信息写入到<Project_Name>.BRO 及<SourceFileName>.Scope 文件中,

并将这些文件放在 Intermediate 工程子目录下。因此,源浏览器只能显示出那

些已经成功编译过的文件信息。要看到修改过后的相关内容,需要重新编译修改

过的源文件。这可以用 Build 菜单命令来做。

10.2.2. 搜索结果

源浏览器窗口的中部显示了在工程中查找到的 Visual Prolog 名称。

Page 176: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

168

在 Search for 栏中输入需要内容后回车可以启动搜索作业。搜索完成后会

显示出一些类、接口及类实现的树,就是在它们中搜索到了名称中包含有前面输

入内容的程序项。点击类/接口/实现前面的 图标可以展开其内容。

那些名称前面有一些图标,它们与工程窗口中使用的图标意义是一样的。

双击任意名称可以在文本编辑器中打开对应的文件并定位到该名称上。而在

树结构窗口内右击鼠标则会调出有如下两个命令的弹出菜单:

Go to Declaration

这会跳到被选名称的声明。如果类/接口/实现含有名称的声明,此项才可用。

Go to Definition

这会跳到被选名称的定义。如果类实现含有名称的定义,此项才可用。

10.2.3. 选项

Search for:

在这里输入要搜索的内容。搜索内容可以是在打开源浏览器前在文本编辑器

中选定的内容,打开源浏览器后选定内容会自动出现在此栏中。

搜索内容可以在名称的任意位置,并不一定要在开头。搜索结果会显示名称

中含有搜索内容的所有名称。

如果输入一个空串,搜索显示的将是选项 Search in 所指定类型的所有工程

项。

Search in:

这里的勾选框及圆按钮用于决定显示何种类型的名称。可选项有:

All - 勾选此项,会在所有类型工程项中进行搜索,其它勾选框将不可用。

可以指定的程序项类型有:

Predicates - 在谓词中搜索。

Facts - 在事实中搜索。

Domains - 在域中搜索。

Constants - 在常数中搜索。

Page 177: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

169

Classes - 在类名称中搜索。

Interfaces - 在接口名称中搜索。

还可以选择是否搜索声明或定义名称或两者都搜索:

Declaration - 仅在声明项中搜索。

Definition - 仅在定义项中搜索。

Both - 在声明和定义项中搜索。

Stay Open

若不勾选,双击任意名称(或选择了名称按 Locate 按钮)后会在文本编辑

器中打开相应文件并定位到该名称,源浏览器就关闭了。

若勾选,进行上述动作时不关闭源浏览器。

Use Regular Expressions

使用规则表达式进行高级搜索(搜索、匹配、替换等)。

规则表达式

规则表达式(或范样)是描述某种匹配方式的文字串。如果 S属于规则表达

式 R描述的串集,那么 S就能与 R匹配。使用规则表达式可以:

• 检查指定串与指定范样是否匹配;

• 在串中搜索与指定范样匹配的子串;

• 替换匹配的子串。

某些规则表达式只能匹配一个子串,也就是说该规则表达式所描述的串集中

只有一个成员。例如,规则表达式 foo 只与串 foo 匹配,再无其它。而有些规则

表达式可以匹配不止一个串,也就是说该规则表达式所描述的串集有多个成员。

例如,规则表达式 f*与含有任意个(包括零个)f 的串匹配。规则表达式中的字

符有些只能与自身匹配(如 f)而有的则与任意具体字符都不匹配(如*)。那

些与自身不相匹配的字符主要用于说明描述不同串集的范样。

规则表达式的语法

Characters(字符)是可以键入的东西,而 Operators(算符)则是规则表

达式中匹配一个或多个字符的东西。规则表达式就是由算符组合而成的,而算符

则是用一个或多个字符表示的。

Page 178: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

170

大多数字符表示的是所谓“自匹配”算符,也就是能与自身匹配。我们称这

样的算符是“普通”算符。有的算符表示的是全部或某一部分算符,比如点(.)

字符,它几乎可以匹配任意字符,是所谓“任意匹配”算符。这类算符我们称之

为“特殊”算符。

更多相关内容请参见 regExp包的介绍。

10.3. Insert 命令

Insert 菜单命令就是在当前编辑的源代码中插入 Visual Prolog 程序元素。

多数这样的命令要使用编译器生成的 Browse information,所以要想让所用的

新名称出现在插入命令菜单的对话框中,需要用 Build | Compile (or Ctrl+F7)

命令对正在编辑的文件进行编译。

Insert 菜单 Constant

调用 Insert Constant 对话框,它包含有编译工程模块时所收集到的所有常

数名称的列表。

pi [math::]

每一行有一个常数名称,后面是定义这个常数名称的类或接口名。常数名称

按字母顺序排列。

选择需要的常数后点击 OK 钮,所选的常数连同其类或接口名就会插入到当

前编辑的代码中。如:

math::pi

Page 179: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

171

Domain

调用 Insert Domain 对话框,它包含有编译工程模块时所收集到的所有域名

称的列表。

windef_list [vpiDomains::]

每一行有一个域名称,后面是定义这个域名称的类或接口名。域名称按字母

顺序排列。

选择需要的域后点击 OK 钮,所选的域连同其类或接口名就会插入到当前编

辑的代码中。如:

vpiDomains::windef_list

Class

调用 Insert Class 对话框,它包含有编译工程模块时所收集到的所有类名

称的列表。

每一行有一个类名称,它们是按字母顺序排列的。

选择需要的类后点击 OK 钮,所选的类名就会插入到当前编辑的代码中。如:

vpiCommonDialogs

Interface

调用 Insert Interface 对话框,它包含有编译工程模块时所收集到的所有

接口名称的列表。

每一行有一个接口名称,它们是按字母顺序排列的。

选择需要的接口后点击 OK 钮,所选的接口名就会插入到当前编辑的代码中。

如:

outputStream_string

Predicate

调用 Insert Predicate 对话框,它包含有编译工程模块时所收集到的所有

谓词名称的列表。

cursorremove(Win), [vpiEditor::] ... cbgetmetafile() -> MetaFile, [vpi::]

Page 180: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

172

每一行有一个谓词(或函数)名称,后面是声明这个谓词(或函数)名称的

类或接口名。谓词(函数)名称是按字母顺序排列的。函数名称后面有它的返回

值名称,如 cbgetmetafile() -> MetaFile。

选择需要的谓词(函数)后点击 OK 钮,所选的谓词(函数)连同其类或接

口名就会以缺省调用模式插入到当前编辑的代码中。如:

vpiEditor::cursorremove(Win), ... MetaFile = vpi::cbgetmetafile(),

Fact

仅当编辑类实现文件时此项才可用。

调用 Insert Fact 对话框,它包含有当前编辑的类实现文件中所有事实或事

实变量名称的列表。每一行有一个事实或事实变量名称,它们是按字母顺序排列

的。

选择需要的事实或事实变量后点击 OK 钮,所选的事实或事实变量就会以缺

省调用模式插入到当前编辑的代码中。

Qualification

使用这个命令之前需要先选好了某个名称。

调用 Scopes for 'selectedName'对话框,它包含有声明所选名称的范围(类

或接口名称)列表。

Insert New GUID

生成一个新的 GUID 值并插入到当前位置。

RGB Value

调用通用的 Color 对话框,选择需要的颜色后点击 OK 钮。相应的常数(假

设是在 vpiDomains 类中声明的),如 vpiDomains::color_Black 或代表所选颜

色的值如 0x808040 就会插入到当前编辑的代码中。

Font Name

调用通用的 Font 对话框,选择需要的字模名称与大小后点击 OK 钮。所选字

模名称及字模尺寸的描述就会插入到当前编辑的代码中。如:

"Times New Roman", 12

Page 181: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

173

File Name

调用通用的 Get & Insert File Name 对话框,浏览并选择需要的文件后点

击 OK 钮。所选文件名及绝对路径就会插入到当前编辑的代码中。如:

"C:\\Vip6_Tests\\My_Test\\TaskWindow\\Toolbar\\Toolbars.ph"

Directory Name

调用通用的 Set New Directory 对话框,浏览并选择需要的目录后点击 OK

钮。所选目录的绝对路径就会插入到当前编辑的代码中。如:

"C:\\Vip6_Tests\\My_Test\\TaskWindow\\"

Include File

调用通用的 Get & Insert File Name 对话框,浏览并选择需要的文件后点

击 OK 钮。所选文件名及相对工程 Include Directories(在工程设置对话框中

的 Directories 标签下设置)的相对路径就会插入到当前编辑的代码中。如:

#include @"TaskWindow\Toolbar\Toolbars.ph"

Date Stamp

在当前位置插入当前日期注释。日期串的格式使用缺省的计算机本地日期短

格式。如:

% 24.09.08

Page 182: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

174

11. Make 工具

11.1. 概述

Make 工具可以生成资源文件及常数文件、更新代码工具对源代码段进行的

修改、编译和链接所有模块从而构造整个工程。它会检查文件的时间戳以确定哪

个文件需要编译或重新编译。当一个.OBJ 文件比它相应的源文或任何它的包括

文件要旧时或不存在时,就需要重新编译。

Make 工具由工程文件(<ProjectName>.prj6)获取所需要的信息,其中包

含有源文件集和构造脚本。构造脚本有下面几个部分组成:

1. main Build script - 描述如何构造 终的目标文件。

2. Rules – 确定如何按指定的扩展名编译文件。

3. Symbols – 可以在构造脚本及构造规则中使用的符号名。

Project Settings 生成缺省的构造脚本,程序员可以修改扩充它。对 Make

工具的设置在 Project Settings (Project | Settings)中。而 终生成的构

造脚本可以通过 Script Preview(Build | Script Preview)对话框来查看。

11.2. Build Symbols

构造脚本可以使用符号(Symbols),引用已定义符号的语法是$(<symbol>)。

符号可以是:

1. 已定义并自动由 IDE 处理的符号,例如, PROJECT_OBJ、PROJECT_LIB、*、

**,等等(这些都是由 IDE 自动处理的,程序员不能直接修改它们)。

2. 起初是 IDE 定义的(由 Project Settings 生成),但可以由程序员修改

的符号,例如,IncDir、ExeDir、ObjDir。程序员可以调出工程设置对话

框,而后在 Directories 标签下编辑或设置这些符号。

搜索给定符号的值是按上述相反的顺序进行的,这样的话,如果用户直接指

定了某个符号(在工程设置对话框的 Directories 标签内的符号)系统就可以直

接使用它。否则,Make 工具就会检查看 IDE 是否定义了这样的符号。如果也没

有,就会给出一个告警信息。

符号是当作宏来标识的,从语法和语义方面来说,它与标准的 make 工具如

Microsoft 的 nmake 和 Borland 的 make 中的符号差不多。

由 IDE 定义的 make 脚本符号有:

Page 183: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

175

符号名 处理 说明

PROJECT_OBJ 自动 目标文件(.OBJ)列表,既有工程模块源文件产生的,也有注

册为工程模块的。

PROJECT_LIB 自动 注册为工程模块的.LIB 文件列表。

PROJECT_RES 自动 在工程窗口中注册为工程模块的.RES 文件列表(可以在构造脚

本中手工添加这样的符号)。

PROJECT_DEF 自动 在工程窗口中注册为工程模块的.DEF 文件列表(可以在构造脚

本中手工添加这样的符号)。

ObjDir 用户可编

Intermediate 目录的位置(也就是它在工程设置的

Directories 标签中设置的位置)。

ExeDir 用户可编

Final 目录的位置(也就是它在工程设置的 Directories 标签

中设置的位置)。

ProDir 自动 Visual Prolog 的根目录 Prolog Root 的位置(也就是它在工

程设置的 Directories 标签中设置的位置)。

LibDir 用户可编

辑 引入库目录的位置(也就是它在工程设置的 Directories 标签

中设置的位置)。这个脚本符号仅当在工程设置中选择了

Target Type 为 DLL 时才有效。

IncDir 用户可编

辑 工程的 Include Directories 列表(在工程设置的 Directories

标签中有相关设置)。编译器只在这些目录中查找 include 指

令要求的文件。

MSLinker 用户可编

辑 可选的 Microsoft C Linker(在 Environment Options 对话框

的 Miscellaneous 标签中 MS Linker 的相关设置)。如果在工程

设置中 Linker Name 选择了 MS Linker,这个符号就会由 IDE

预定义。

* 自动 (不含扩展名的)用于命令执行的当前目标文件名称。比如,

它可以是链接器命令中的工程目标文件名或是要由编译器生成

的 OBJ 文件的名字。

** 自动 与*相同,但是带有相对加载工程根目录的相对路径。因为文件

的路径可由标准的 PFC 谓词 fileName::reduce/2 得到,所以有

时它也可以是绝对路径。

'+' 自动 IDE 将在 终的构造脚本(命令行)中用+<CR><LF>组合(加号

后跟回车和换行)替换掉所有的'+'(单引号括起的加号)。如

果'+'与符号连用,形如$'+'(Symbol),则 IDE 会在所有替换符

号的名称后加上+<CR><LF>组合。

11.3. Make Rules

Make Rules 提供了一些缺省的编译文件的规则。Make Rules 语法是:

InputExtension -> OutputExtension : CommandLine

Page 184: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

176

每一行就是一个转换文件的命令行,将扩展名为 InputExtension 的文件转换为

扩展名是 OutputExtension 的文件,命令行是 CommandLine。

pro->obj:"$(ProDir)Bin\Vip7Compiler.exe" /L:R /L:I $(IncDir) "$**.pro"

/OBJECTFILE:"$(ObjDir)$*.obj"

pack->obj:"$(ProDir)Bin\Vip7Compiler.exe" /L:R /L:I $(IncDir)

"$**.pack" /OBJECTFILE:"$(ObjDir)$*.obj"

例如,将 a .PRO 文件编译成 an .OBJ 文件,需要执行如下命令:

"$(ProDir)Bin\Vip7Compiler.exe" /L:R /L:I $(IncDir) "$**.pro"

/OBJECTFILE:"$(ObjDir)$*.obj"

其中的 $* 将替代为实际文件名称而 $** 则将替换为带有相对工程根目录的相

对路径的实际文件名称。相关内容可以参看命令行编译器选项。

对于熟悉其它 make 工具的人来说有一点是特别的:这里的规则略同于所谓

隐性规则。与 Visual Prolog v. 5 中的 IDE 不同,当前版本的 IDE 中不能指定

显性规则(局部规则)。

可以指定执行批处理文件的规则。

可以在工程设置 Build Options 标签中查看和编辑定义的工程 Make Rules。

11.4. Build Script

Build 脚本是描述如何构造工程目标文件的主命令。

"$(ProDir)Bin\VIP6Link.exe" -F<< -E_VIPStartUp@0 -d -TPE -SGUI

-o"$(ExeDir)$*.exe"

-M"$(ObjDir)$*.map" $(PROJECT_OBJ)

"$(ObjDir)$*.res" $(PROJECT_LIB)<<

"<<TEXT<<" 的意思是:把 TEXT 放入一个临时文件,test 将替换为实际的临时

文件名。

可以在工程设置 Build Options 标签中查看和编辑定义的工程 Build 脚本。

相关内容可以参看参看命令行编译器选项。

Page 185: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

177

11.5. Make Scripts

Make 脚本包含了所有 Make 工具要执行的构造工程 终目标文件的命令。可

以在 Preview Script 窗口(Build | Preview Script)中查看这些命令。在这

个窗口中显示的每个命令的形式为:

NameOfFileToBeExecuted CommandToBeExecuted

其中 NameOfFileToBeExecuted 应当是完整的带有全路径的文件名,而

CommandToBeExecuted 是全文本的命令,所有 Build 符号替换都已经完成了。

11.6. Build 命令

11.6.1. Build | Compile

这个命令会对包含当前编辑文件的模块(编译单元)进行编译。命令的执行

有赖于下述文件属性:

1. 若文件扩展名是.PACK 或.PRO ,而且它是当前工程的一个模块,IDE 就会

编译这个模块。

2. 若文件扩展名是.PRO 而它又包括在当前工程的某个模块中,IDE 就会编

译该模块。

3. 若这个文件不是当前工程的模块,其扩展名是.PH、.CL、.I(也可能是老

的扩展名.CON、.PRE、.DOM),IDE 就会查找包含有这个文件的工程模块

并编译第一个匹配上的模块。

4. 对所有其它的情况 IDE 会编译工程窗口中选择的模块。

要注意,IDE 无法编译不属于已经打开工程的文件,对这样的文件 IDE 进行

编译的是工程窗口中选择的文件。如果 IDE 没有打开工程,它就无法编译文件,

菜单项 Build | Compile 是禁止的。

11.6.2. Build | Build

如果编译后有资源被修改了,代码工具有可能会更新源代码文件的某些段。

这个命令就是用来检查工程中所有源文件的时间戳,如果有源文件(或源文件所

包括的文件)时间比相应的.OBJ 文件要新,则该工程模块就要重新编译。

Build 也用于构造资源文件。

之后,整个工程会就链接生成目标模块(可执行程序或 DLL)。

Page 186: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

178

11.6.3. Build | Rebuild All

这个命令与功能与 Build | Build 一样,但它不检查文件的时间,对所有

文件重新编译并链接。

11.6.4. Build | Stop Building

这个命令用于停止编译/链接。

11.6.5. Build | Execute

需要时这个命令会先做 Build | Build,而后启动生成的可执行文件。

11.6.6. Build | Run in Window

这个命令只在工程用户接口策略是控制台类型时才可用。它将在特殊文本窗

口中执行控制台类型(非图形用户接口)的工程目标。需要时它也会先做 Build

| Build (以生成可执行文件)再创建和显示文本模式的窗口。在这个窗口中会

执行 DOS 的 pause(暂停)命令并提示用户:“Press any key to continue ...”,

用户按任意键会启动生成的可执行文件。

Page 187: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

179

12. IDE 中使用其它程序及 DLL

12.1. 添加对其它程序的调用

使用 Tools | Configure Tools 命令打开 Tools 对话框,在这里可以指定

十条命令的热键(Ctrl+1 到 Ctrl+0)。这些命令可以在取得焦点的 IDE 编辑器

(IDE 的文本编辑器及资源编辑器)中打开的文件之上执行。

12.2. 引用某个命令

例如,可以将热键 Ctrl+3 分配给一个行命令,这个命令会修改已经在取得焦

点的 IDE 文本编辑器中打开的文件的只读属性为 OFF。事情可以这样做:先在对

话框 Tools 中选择 Ctrl+3 热键,在按该组合键要执行的命令栏 Command Line 中

输入相应的命令(或是用 Browse 按钮选择一个要执行的文件),这个例子要输

入的是:

attrib

而属性要指定为:

-r $(file)

再在 Name: 栏中输入这个命令的名称,比如, TmpWritable。

现在,在 Tools 菜单项中可以看到有一个子菜单项 TmpWritable Ctrl+3 。

可以选择这个菜单项或按相应的热键来执行这个命令。

12.3. 命令行语法

注意,在 Command Line 中不要把要执行的文件用引号包起来,IDE 会自动

做这个事。但是,在一个命令文件中则需要把要执行的、含有空字符的文件名用

引号包起来。

IDE 可以将下列参数传递给指定的行命令:

• $(file:pne) – 是在取得焦点的 IDE 编辑器中打开的带有路径及扩展名的文件全名。

• $(file:p) – 是在取得焦点的 IDE 编辑器中打开的文件路径名。 • $(file:n) – 是在取得焦点的 IDE 编辑器中打开的文件名(不带路径名及扩展名)。 • $(file:e) – 是在取得焦点的 IDE 编辑器中打开的文件扩展名(不带路径)。 • $(file:ne) – 是在取得焦点的 IDE 编辑器中打开的文件名(不带路径)。 • $(file:pn) – 是在取得焦点的 IDE 编辑器中打开的带有路径但无扩展名的文件全名。 • $(file) – 是在取得焦点的 IDE 编辑器中打开的带有路径及扩展名的文件全名。

Page 188: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

180

• $(line) – 是取得焦点的 IDE 文本编辑器中“插入”光标当前所在行号。如果当前激

活的是非文本编辑器则其始终为 0。

• $(column) – 是取得焦点的 IDE 文本编辑器中“插入”光标当前所在列号。如果当前

激活的是非文本编辑器则其始终为 0。

• $(repository) – 是源控制系统(source control system)使用的知识库路径。 • $(password) – 是源控制系统(source control system)使用的口令。 • $(user) – 是源控制系统(source control system)使用的用户名。 • $(scfile) – 是源控制系统(source control system)中带有路径的文件名。 • $(host) – 是源控制系统(source control system)使用的主机地址。

这些工具作用于激活的文件(也就是在激活的编辑器中的文件)。 $(column) “插入”光标当前所在列号 $(line) “插入”光标当前所在行号 $(file) 文件名 $(file:p) 文件路径名 $(file:n) 文件的名称 $(file:e) 文件的扩展名 $(file:pn) 路径和文件名 $(file:ne) 文件名和扩展名 $(file:pne) 路径、文件名及扩展名(同 $(file) ) 以下内容是源控制系统(如 SourceSafe,Vault 等)使用的: $(repository) Source Control repository $(scfile) Source Control file name

上述这些变量的值与在 Tools -> Source Control Repositories...中的设

置有关。如果文件名是c:\xxx\yyy\zzz\aaa.pro,知识库RRR的目录c:\xxx\yyy,

则上述变量值将是:

$(repository) = RRR $(scfile) = $/zzz/aaa.pro

这些值适用于定义 CheckOut 命令 (Ctrl-1),当文件是“只读”时 IDE 某

些操作会使用这个命令(当然也可以按 Ctrl-1 来执行这个命令)。

后几个变量(即$(password) $(user) $(host))几乎没什么用。有一些

用于 CheckOut 命令很有用的变量,它们也是 Tools -> IDE Variables...定义

的不多的变量。

变量 $(ProDir) 表示的是 Visual Prolog 安装目录。

Page 189: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

181

12.4. 在 MS Visual Source Safe 中 Check In 文件

这里举个例子,来讨论一下如何将参数传递给一个命令文件中的行命令,我

们要用这个命令文件把在 IDE 编辑器中打开的文件在 MS Visual Source Safe (VSS)中设置“Check In”标记。步骤如下:

• 选择菜单项 Tools | Configure Tools 打开 Tools 对话框。

• 选择一个未使用的命令,比如 2,在 Name 栏中输入“Check In”。

• 在 Command Line 栏中输入命令:

C:\Visual Prolog 6\Check_In.cmd 属性设置为:

$(file) $(file:p) $(file:ne) $(line) $(column) $(repository) $(scfile)

• 命令文件 Check_In.cmd 内容如下:

setlocal set ssexe="v:\win32\SS.EXE" set ssdir=v:\VIP6 cd %2 %ssexe% Checkin %3 -I- endlocal

这其中有一些 Visual Source Safe 命令行选项,这里不做讨论。我们来看这个

命令文件还要使用的如下参数:

• $(file:p) 获取“在取得焦点的 IDE 编辑器中打开的文件路径名”

• $(file:ne) 获取“在取得焦点的 IDE 编辑器中打开的文件名及扩

展名”

现在可以在合适的 IDE 编辑器中(比如 IDE Designer)打开一个(保存在

Visual Source Safe 数据库中的)文件,然后按热键 Ctrl+2(也可以选菜单命令

Tools | VSS Check In)。这将执行 Check_In.cmd 文件,会“Check In”打开的文

件。这个操作会把更动复制到 VSS 数据库中,在 VSS 数据库中创建一个包含有

所用编辑器描述的该文件的新版本。当其他人使用 Get Latest Version 命令或

Check out 该文件时,就可以看到在该编辑器中所作的所有修改。

12.5. 在 Vault 中 Check Out 文件

再举一个例子,看看如何在 Vault 的知识库(数据库)中 Check out 一个在

IDE 编辑器中打开的文件。与前一段讨论的情况一样,这需要:

• 创建一个命令文件激活 Vault,对打开的文件定制相应的 Vault 命令并执

行。

Page 190: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

182

• 在 IDE 命令中添加对这个命令文件的调用。

比如,添加如下图中所示的命令文件:

Tools 的子菜单将如下图所示:

现在,如果有一个文件在某个 IDE 编辑器中打开,可以用 Ctrl+1 热键(当

然也可以用菜单命令 Tools | Check Out)对其使用 Vault 的 Check out 命令。 简要讨论一下 Check_Out.cmd 批命令文件。先设置属性如下:

$(scfile) $(repository) $(password) $(user) $(host) Check_Out.cmd 文件中的命令如下: set USER=%4 set PW=%3 set HOST=%5 set REPOSITORY=%1 set LOGIN=-user "%USER%" -password "%PW%" -host "%HOST%" -repository

"%REPOSITORY%" set HOME=C:\Program Files\SourceGear\Vault Client set CMD="%HOME%\vault.exe" %LOGIN% %CMD% checkout %1

Page 191: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

183

前几行是将要传递给 Vault 的 LOGIN 命令的准备,比较简单,不用讨论。

接下来两行准备 CMD 命令,这个命令调用行命令版的 Vault 客户应用程序

vault.exe 并传递 LOGIN 参数,用这些参数与 Vault 服务器建立连接。 后是 Vault的 checkout 命令,它会 check out 指定的文件。

更多 Vault 行命令参数可以参见 Vault 的帮助文件。

Page 192: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

184

13. Messages 和 Errors 窗口

13.1. Messages 窗口

Messages 窗口显示各类 IDE 重要事件的过程消息,如:保存了一个文件或

工程、打开了一个新的工程、编译了一个模块、构造了一个工程,等等。在这个

窗口中可以看到 IDE 所有重要事件的一个列表,所以它也是 IDE 执行过程的一个

记录。窗口可以在任意时间滚动与缩放,以便看到更多内容。

消息窗口中的选定内容可以拷贝到剪贴板。

在窗口中点击鼠标右键可以调出一个弹出式菜单。

消息窗口使用的字模可以在 Tools | Options 命令 Fonts 标签下进行修改,

也可以用弹出式菜单中的 Font 项修改。

在 Options 对话框的 Messages Window 标签(可以用 Tools | Options 命

令激活)下可以设置:

• 消息窗口记录的行数,

• 窗口的位置,

• 窗口中的消息是否要回绕。

消息窗口关闭后,可以通过勾选 View | Messages Window 项再次打开。

13.2. Errors (Warnings)窗口

当编译 Prolog 文件或链接目标文件、库及资源文件生成单一目标文件有错

误或警告消息时,IDE 会就显示出这个窗口。错误窗口出现时如下图示:

Page 193: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

185

每一行有三个部分:Type、Description 及 Filename。Type 这一列显示的

是消息的代号与类型。比如,“e163”表示 163 号错误,“w507”表示 507 号警

告。可以在 Visual Prolog 帮助文件中找到这些错误的详细描述。当光标置于窗

口中某一行时,按 F1 键可以激活 Visual Prolog 帮助文件显示对应该行错误的

详细内容。

Description 列是描述消息,而 Filename 列是出现错误或警告的文件名。

在窗口中某一行错误或警告消息上双击鼠标,IDE 会打开相应的源文件并置

光标于产生错误或警告的位置上。

窗口下部是关于错误的详细描述,有文件的全路径及文本中的位置,错误消

息的全名,包括代号与描述。如果由于某种原因 F1 键无法使用,可以用帮助文

件的索引来查找消息的详细描述。

Page 194: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

186

14. TODO 窗口

TODO 窗口显示 Find In Files 对话框,在工程的源文件中进行搜索并提出

TODO 建议。搜索完成后会显示 Search results 窗口标题,窗口中显示内容除了

标准搜索结果而外,还有施行 TODO 建议的具体位置。

Page 195: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

187

15. IDE 其它一些对话框

15.1. Warning: These files will be overwritten:

使用工程设置工具创建新工程时,可以指定工程存放的子目录(注意,通常

这个子目录的名称是由工程名自动生成的)。每个工程都包含有若干标准文件(由

IDE 自动生成),这些标准文件有标准的名称。因此,如果子目录名称与已有的

工程子目录一样了,那么这两个工程就会有一些相同名称的标准文件。由于这些

文件的旧版本可能与新工程不兼容,所以工程设置会出现一个带有如下标题的对

话框:

These files will be overwritten:

对话框中可以看到将被覆盖文件的列表。可以:

Continue

如果按了这个按钮,列出的旧版本文件将由新版本文件覆盖。

Cancel

如果按了这个按钮,不会覆盖任何文件,IDE 返回到工程设置对话框,可以

在 Subdirectory 栏中换个名称。

15.2. Resolve Ambiguity

执行以下命令:

• Go to Declaration (Ctrl+Shift+D),

• Go to Definition (Ctrl+Shift+C), 或

• 显示 Visual Prolog Help (F1)

时,如果有若干相同的名称而 IDE 又无法确定用户指的是哪个,就会出现求解模

糊窗口。相应地,其窗口标题有:

• Resolve Ambiguity of 'name' Declaration • Resolve Ambiguity of 'name' Definition • Choose 'name' to Show Help Topic

窗口中显示了所涉及名称的列表及附加的信息(采集自编译器生成的

browse information),这些附加信息可以帮助解决名称的模糊问题。一般这些

消息包含了所涉及的名称其声明所在的类或接口。

Page 196: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

188

名称前面的图标与在工程窗口中使用的一样,另外还使用了下面两个图标:

图标 描述

公用函子 (domain alternative).

私有函子

要继续执行命令,需要选择(点击)所显示出的名称中的某一个。

15.3. Replace Text

这个对话框用于查找和替换当前编辑文件中的指定文本(串或规则表达式)。

Text to Find

在这里输入需要查找的串或规则表达式,也可以从下拉列表中选择以前用过

的串。

New Text

在这里输入替换串或规则表达式,也可以从下拉列表中选择以前用过的串。

要注意,这里使用的规则表达式受限于在 Text to Find 栏中使用的规则表达式。

Origin

这个选项组明确了文件中的搜索范围:

Entire Scope

在整个文件中搜索。

From Cursor

从当前光标位置起搜索。

Selected Text

在选定的块中搜索。

Direction

这组选项明确了搜索的方向:

Forward

向当前插入点后搜索。

Page 197: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

189

Backward

向当前插入点前搜索。

Options

用这组选项定义搜索选项:

Case Sensitive

按给定的大小写查找串。

Whole Words Only

将给定的串当做完整内容来查找,也就是说查找与指定串完整匹配的串。例

如,搜索“my::List”时只会与“my::List”匹配而不会与“cmy::List”或是

“my::Listtt”匹配。

Use Regular Expressions

使用规则表达式进行高级搜索与替换操作。

规则表达式

规则表达式(或范样)是描述某种匹配方式的文字串。如果 S属于规则表达

式 R描述的串集,那么 S就能与 R匹配。使用规则表达式可以:

• 检查指定串与指定范样是否匹配;

• 在串中搜索与指定范样匹配的子串;

• 替换匹配的子串。

某些规则表达式只能匹配一个子串,也就是说该规则表达式所描述的串集中

只有一个成员。例如,规则表达式 foo 只与串 foo 匹配,再无其它。而有些规则

表达式可以匹配不止一个串,也就是说该规则表达式所描述的串集有多个成员。

例如,规则表达式 f*与含有任意个(包括零个)f 的串匹配。规则表达式中的字

符有些只能与自身匹配(如 f)而有的则与任意具体字符都不匹配(如*)。那

些与自身不相匹配的字符主要用于说明描述不同串集的范样。

规则表达式的语法

Characters(字符)是可以键入的东西,而 Operators(算符)则是规则表

达式中匹配一个或多个字符的东西。规则表达式就是由算符组合而成的,而算符

则是用一个或多个字符表示的。

大多数字符表示的是所谓“自匹配”算符,也就是能与自身匹配。我们称这

样的算符是“普通”算符。有的算符表示的是全部或某一部分算符,比如点(.)

Page 198: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

190

字符,它几乎可以匹配任意字符,是所谓“任意匹配”算符。这类算符我们称之

为“特殊”算符。

更多相关内容请参见 regExp包的介绍。

Replace

点击这个按钮会替换当前选定的内容,如果没有选定内容则会按预定的搜索

选项搜索指定的串(规则表达式)。

Find Next

点击这个按钮会按预定的搜索选项搜索指定的串(规则表达式)的下一个。

Change All

点击这个按钮会替换指定范围内所有搜索到的文本。

Close

关闭对话框。

Help

显示该帮助主题。

15.4. Find Text in Files

使用这个对话框可以在指定的文件组中查找任意字符组合,包括大小写的字

母、完整单词或单词片段、规则表达式等等。

Text to Find

在这里输入需要查找的串或规则表达式,也可以从下拉列表中选择以前用过

的串。

Page 199: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

191

Find in All Opened Editors

如果只需要在 IDE 文本编辑器当前打开的文本文件中搜索指定的串,应该勾

选这一项。

Find in Project Files Only

如果只需要在作为工程组分加载到集成开发环境的文本文件中搜索指定的

串,应该勾选这一项。

如果没有打开的工程,此项不可用。

Show Search Results in New Window

如果勾选此项,每次搜索完成后都会打开一个新的 Search results 窗口;

不勾选则在同一窗口显示搜索结果。

In Files:

在这一栏中可以键入(或选择先前使用过的)限定 IDE 搜索指定串的文件范

围。比如,可以用 * 表示任意子串。

如果勾选了 Find in All Opened Editors 项,则此项不可用。

In Folder:

在这一栏中可以键入(或选择先前使用过的)限定 IDE 搜索指定串的文件夹

范围。

如果勾选了 Find in All Opened Editors 项,则此项不可用。

Browse

点击这个按钮会打开 Set New Directory 对话框,在其中选择的文件夹将会

被插入到 In Folder 栏中。

如果勾选了 Find in Project Files Only 项,则打开的对话框中只会显示

该工程所记录的文件夹。

如果勾选了 Find in All Opened Editors 项,则此项不可用。

Search Subfolders

勾选此项(缺省)时 IDE 会在 In Folder 栏中指定的文件夹及其所有子文件

夹搜索,不勾选则只在 In Folder 栏中指定的文件夹中搜索。

Page 200: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

192

Whole Words Only

将给定的串当做完整内容来查找,也就是说查找与指定串完整匹配的串。例

如,搜索“my::List”时只会与“my::List”匹配而不会与“cmy::List”或是

“my::Listtt”匹配。

Case Sensitive

这一栏中有三个选项:按给定的大小写查找串(Case Sensitive);不论大

小写(Case Insensitive);只需要匹配指定串第一个字符的大小写(Prolog

Sensitive)。如果勾选 Regular Expressions,则 后一个选项不可用。

Regular Expressions

使用规则表达式进行高级搜索操作。

规则表达式

规则表达式的语法

Find

点击这个按钮会按预定的搜索选项搜索指定的串(规则表达式)。

Stop

停止搜索。

Help

显示帮助主题。

Search results 窗口

这个窗口显示的表格中包含了查找到指定串的文件名、指定串在文件中的位

置(行列号)及整行的具体内容。

Page 201: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

193

如果双击文件名,则会在文本编辑器中打开该文件。

15.5. Find Text

使用这个对话框可以查找任意字符组合,包括大小写的字母、完整单词或单

词片段、规则表达式等等。

Text to Find

在这里输入需要查找的串或规则表达式,也可以从下拉列表中选择以前用过

的串。

Origin

这个选项组明确了搜索的文件范围:

Entire Scope

在所有文件中搜索。

From Cursor

从当前光标位置起搜索。

Selected Text

在选定的文本块中搜索。

Direction

这组选项明确了搜索的方向:

Forward

向当前插入点后搜索。

Backward

向当前插入点前搜索。

Options

用这组选项定义搜索选项:

Case Sensitive

Page 202: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

194

按给定的大小写查找串。

Whole Words Only

将给定的串当做完整内容来查找,也就是说查找与指定串完整匹配的串。例

如,搜索“my::List”时只会与“my::List”匹配而不会与“cmy::List”或是

“my::Listtt”匹配。

Use Regular Expressions

使用规则表达式进行高级搜索(搜索、匹配及替换)操作。

规则表达式

规则表达式的语法

Find

点击这个按钮会按预定的搜索选项搜索指定的串(规则表达式)。

Close

关闭对话框。

Help

显示帮助主题。

15.6. 窗口导航对话框

可以用 Ctrl-TAB 键在 IDE 窗口间切换,顺序为 近访问的排在 前面。

按 Ctrl-TAB 还会带出一个所有打开窗口的列表对话框,按着 Ctrl 键它就一

直是打开的。对话框中可以看到可切换的下一个窗口,不过也可以直接用方向键

或鼠标选择需要的窗口。如果按字母键,则列表会过滤出首字母为该字母的窗口。

Ctrl-F1 帮助

Ctrl-Del 关闭选定的窗口

Ctrl-BackSpace 删除 后一个字母

Ctrl-Alt 切换显示/不显示只读文件(switches on/off showing only

read-write files)。

Page 203: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

195

15.7. 发送错误报告给技术支持

关于 Visual Prologr 的技术支持

VIP 技术支持负责回应的问题仅限于 Visual Prolog 语言、IDE 及其它工具

和 Visual Prolog 商业版本随附包的使用方面。

向 Visual Prolog 技术支持提供错误报告的注意事项 1.发送电子邮件前请先查阅以下地址中的相关内容:

• Frequently Asked Questions

• Visual Prolog Knowledge Base

2. 请勿询问一般性问题如:“Visual Prolog 和 Fuzzy Logic?”

这类问题及自由讨论我们提供有论坛: Visual Prolog Discussion Forum.

这个论坛中可以提出和自由讨论任何与 Visual Prolog 有关的问题。任何人

都可以读贴,发贴则需要注册。

Prolog 开发中心(PDC)会尽可能地跟踪与参与讨论,但不能保证每贴必回,

这主要是大家参与的论坛。

该论坛还会发布来自 PDC 的重要公告。

3. 提交报告必须包含由 Help | Send Bug Report 命令产生的信息

这个信息采集了你的计算机及有助于正确理解所提交问题的工程方面的主

要数据。包含有这类信息的支持请求会有更高的优先级。

4. Send Bug Report to PDC Support 选项:

Copy & Send Mail

复制对话框信息到剪贴板,激活缺省的邮件程序并创建一封简单的邮件给

Visual Prolog 技术支持 [email protected]

Copy

复制这个对话框信息到剪贴板。

Close

关闭这个对话框。

Page 204: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

196

Help

打开此帮助页面。

5. 如何写内容:

To:

Visual Prolog 国际技术支持组(VIPSupport)的地址是:

[email protected]

这个内容会自动生成。

Subject:

写一条短小、精练、确切的主题,比如:

“Classes: cannot use nocopy single facts with binary domain”

不要使用下面这样的主题:

“My 1st problem with Prolog”

Message Text:

一条消息只写一个问题,拜托!

在这里描述问题,尽可能详细、准确。

请提供代码例子说明你的问题。

这里提供的信息应该足以在我们的计算机上复现你的问题。

发送问题报告请遵循以上注意事项。

Page 205: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

197

16. Visual Prolog 的子目录及示例

Visual Prolog 是基于 Prolog 编程语言的完整开发环境,它包含了所有构

建大型商业应用程序所需要的内容:集成开发环境(IDE)、编译器、链接器、

调试器、在线帮助以及 Visual Prolog Foundation Classes (Visual Prolog

基础类,缩写为 PFC)。PFC 是类与接口的一个集合,为编写各类应用程序与软

件部件建立了基础。这些类与接口按包的层次组织在一起,支持: GUI、文件系

统、事实数据库、外部数据库、算术、串处理、日期与时间、ODBC、注册项管理、

CGI、sockets/HTTP/FTP、Microsoft COM、多线程,等等。

Visual Prolog 安装之后在安装目录下会创建以下一些子目录:

bin 包含有 Visual Prolog 可执行文件及主要的支持文件。

doc 包含有 Visual Prolog 在线帮助文件 vip.chm。

lib 包含有 Visual Prolog 库文件。

pfc 包含有 Visual Prolog 基础类(PFC)及相应 DLL 的一些引入库文件。

还有一些文件复制到了 Windows 的 System32 子目录中。

在 bin 子目录中,可以找到 SetupExamples.exe 文件,这是 Visual Prolog

examples 的安装文件。

16.1. BIN 子目录中的文件

BIN 有以下可执行文件及 Visual Prolog 主要支持文件:

Vip.exe 集成开发环境的可执行文件。IDE 中有文本及各类资源编辑

器、代码生成工具(Code Experts)、构造控制逻辑及内建

的调试器。IDE 调用编译器及链接器构造目标文件。

Vip7Compiler.exe Visual Prolog 的行命令编译器。

Vip6Link.exe Visual Prolog 的行命令链接编辑器,用它组合目标文件及

库模块以形成单个的映像文件:可执行文件或是动态链接库

(DLL)。

VipBuilder.exe Visual Prolog 的行命令构造器,它用 Visual Prolog 的工

程文件生成该工程规定的目标文件。

ProDoc.EXE Prolog 文档工具应用程序,它用于在线由带有特殊类型注释

的 Visual Prolog 源代码文件取得参考资料。

MemProfileAnalysis.exe 这是用于显示某个程序使用堆存储器的图表的小程序。它需

要调用 profileMemory::profileBegin :

( ProfileFilename)创建堆使用文件,再加载这个

ProfileFilename 文件到 MemProfileAnalysis.exe。

coverageAnalysis.exe 覆盖分析给出程序执行中调用谓词的情况。这个程序读

Page 206: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

198

取.deb 文件以得取关于程序中类及谓词的信息,读取覆盖文

件以得取程序执行中调用的谓词信息。要使用这个工具,程

序必须带选项/profile:min 及 /debug:full 编译。

Vip7associations.exe

SetupExamples.msi Visual Prolog 示例的安装程序。

IdeDebug.dll 这些是 Visual Prolog 调试器和 IDE 使用的 DLL。

Project7.fkb 这是 Visual Prolog 外部数据库形式的知识库。IDE 代码专

家系统及工程设置要用到它。比如存储在 PROJECT.FKB 中的

关于支持工程设置的知识,工程设置工具创建 Visual Prolog

工程或修改已有工程时就要使用它生成信息放在所创建的

<created_Project>.PRJ6 工程文件中。对话框和窗专家系统

使用标准资源类型的描述框架及宏规则生成缺省的程序代

码。IDE的Insert 工具要用到PFC谓词及其它Visual Prolog

对象的描述。

Prolog.bmp Visual Prolog IDE 的启动图片。

HelpTopic.db IDE 使用的文本关联帮助文件。例如,当光标置于某个谓词

或域上时按 F1 键,IDE 就会使用来自 HelpTopic.db 的信息

显示相应光标处谓词或域的帮助主题。

RES RES 子目录下包含的、被 IDE 用作缺省资源的资源文件,这

些文件要复制到创建的工程中。

Vip7CompilerC.dll Visual Prolog 行命令编译器的一个部件。

Vip7chainDB.DLL 这个库用于支持使用 PFC chainDB 包中实现的 Visual

Prolog 外部数据库。

Vip7edit.dll 这个库用于支持使用 PFC vpiEditor 包中实现的 Visual

Prolog 文本编辑器。

Vip7Run.dll

Vip7Kernel.dll

这些库实现运行时 Visual Prolog 执行系统。

Vip7res.DLL 这个库用于支持使用 PFC vpiResourceSupport 资源支持包。

IDE 也使用它生成和读取 RES 文件。还有 IDE 的图形编辑器

也使用它。

HHActiveX.DLL 这是 Microsoft HTML Help 格式文件使用的 activeX 控件。

VIP.CHM Visual Prolog 帮助文件要使用它。

comWrapper.dll

dbghelp.dll

Vip7regExp2.dll 这个库用于支持使用 PFC regExp 包。

vip7vpi.dll 这个库用于支持使用 PFC VPI 包。

16.2. LIB 子目录中的文件

LIB 子目录包含有 Visual Prolog 对象库及引入库。

Page 207: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

199

Vip7init.lib Visual Prolog 运行时启动代码。

Win32.LIB 这个库提供了与 Windows 32 API 函数的接口。

Vip7Kernel.lib

Vip7run.lib

这些是复制到 BIN 子目录中的 DLL 相应的引入库。

要注意,IDE 的构造工具会生成链接编辑器 Vip6Link.exe 使用的正确的行

命令,链接器就是用这个命令链接目标工程文件的。对于 GUI 可执行程序这些行

命令中包含有一些按下面顺序规定的 LIB 文件:

"..\Lib\Vip7edit.lib" "..\Lib\Vip7init.lib" "..\Lib\Vip7kernel.lib" "..\Lib\Vip7run.lib" "..\Lib\Vip7vpi.lib" "..\Lib\Unicows.lib" "..\Lib\Win32.lib"

如果要自己编写链接器命令文件,建议不要改动这些缺省的.LIB 文件顺序。

16.3. Visual Prolog 示例

在 bin 子目录中有一个 SetupExamples.msi 文件,这是 Visual Prolog 示

例的安装文件。示例的缺省子目录是“Visual Prolog 7.3 Examples”,安装时

可以改变它。目前,提供了以下示例:

animationControlDemo

bgDemo

BITS Example

CallProcess 外部进程调用的示例

CGI CGI 版本的汉诺依塔游戏

Com 这些示例演示如何用 Visual Prolog 创建 COM 组件以及如何在

Visual Prolog 程序中使用 COM 组件。

DDE 这个目录中包含的示例演示 Windows DDE 进程通信。在 Server

和 Client 子目录里有 DDE 服务器及 DDE 客户端应用程序的示

例。 DDE client 发起与控制对 DDE server 的通信。在 Office

子目录下有一个 DDE 客户端应用程序的示例,它可以与

Microsoft Office 程序(比如可以与 MS Word)通信。所有程

序使用来自 PFC VPI 包的 vpiDDE.cl 类。

diskUsage 这个示例演示了利用PFC fileSystem包获取不同目录下文件信

息的情况,示例中还使用了 VPI/vpiTreeView 包的图形界面功

能。

Dll 这个示例演示了如何创建和使用 Prolog DLL。

ESTA 专家系统外壳

genericsExample

GDIplus 这个示例演示了如何使用 GDI+画图。

GridDemo 这个程序包含一个 Grid 控件示例,演示了如何使用该控件。

GridForm 这个示例演示了如何创建 Grid 控件。

Page 208: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

200

GUIask 利用面向对象的 GUI 创建询问对话框的示例。

GUIbutton 这个程序演示了如何处理 OK 按钮及 Cancel 按钮,如何处理缺

省按钮,如何处理按钮响应器等内容。

GUIbrowser 使用面向对象 GUI 的源浏览器示例。

GUIDemo 这个示例演示了如何在传统 GUI 应用程序中处理对话框及控

件。它也展示了类事实与对象事实的差别。

GUIform 面向对象 GUI 的表单处理示例。

GUIlist 使用面向对象 GUI 创建 list 控件的示例。

GUIradio 使用面向对象 GUI 创建 radio 按钮的示例。

GUItab 面向对象 GUI 处理 tab 控件的示例。

GUIValidation 这个程序演示如何使用“确认”功能。“确认”通常会是一个

核定,按 OK 按钮后施行相应的动作。这类确认常用于确保所有

控件的输入是合法值。

ISAPI 创建 ISAPI DLL 的示例。

TextEditor 这个示例演示了在一个 GUI 应用程序中加入和使用 VPI 文本编

辑器非常简单。它也演示了如何使用 PFC 的 VPI/vpiEditor 包。

listViewDemo 这个示例演示了如何使用 PFC VPI/vpiListView 包创建带有

vpiListView 控件的对话框。

LZDecompression

mdiWin 这个 MDI 模式示例演示了如何将标准的 Windows 子菜单项更

改为用户定义的项。

MSXML Example

MultiThreadDemo 这个示例演示了如何创建多线程应用程序及如何进行线程间的

交互。示例中每个线程产生的结果置于一个(所有线程共用)

的队列中,主线程逐一读取并显示它。

OdbcDemo 这是个比较复杂的示例,演示了 Visual Prolog ODBC 的连接。

它是一个 GUI 应用程序,提供了若干种不同复杂功能,使用的

是 PFC ODBC 包。

pictureDraw 这个示例演示了使用含有若干图元的 GdiPlusX.lib 库绘制图

形的方法。示例声明了 gdiPlus 包,这个包提供使用

GdiPlusX.lib图元绘制图形的功能。pictWin包中含有绘制BMP

及 JPG 文件图形的谓词。

Pie 这是GUI的Prolog推理机(PIE)解释程序。它使用标准的Prolog

语法(K&M)并实现了 常用的谓词。

pieDemo

Parser Generator

simpleOdbc 这是一个相对简单的(相比 OdbcDemo)演示 ODBC 连接的示例。

它是一个控制台应用程序,只能打开所提供的 odbc.mdb 数据库

且只有很少的功能。它使用的是 PFC ODBC 包。

StreamDemo

这个示例演示 Visual Prolog 流: outputStream_string,

outputStream_file, console::getConsoleOutputStream,等

等。它还展示了事实数据库可以写到任意输出流去。

Page 209: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

201

SandClocks 这个示例演示使用简单的枚举算法求解目标:“有若干时钟,

如何测量指定时间片段?”

Sudoku

将时下很流行的 Sudoku 游戏作为一个示例,演示这类问题可

以使用“约束编程”的方法解决,并展示了一个简单的有限域

约束解的方法。同时,还演示了如何构造一个交互 GUI 可视化

地展现约束解。

treeControlDemo

useVipInDotNet 这个示例演示如何在 Dot Net 的 Visual Basic 应用程序中创建

和使用 Visual Prolog DLL。示例提供了工程的 Visual Prolog

及 Visual Basic 源代码。

WebBrowser 这个示例演示了使用 Visual Prolog 编制一个全功能的 WEB 浏

览器非常容易。示例中使用了Microsoft的ActiveX WebBrowser

控件。

toyIDE

Progress

ProgressBarDemo

Page 210: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

202

17. Visual Prolog IDE 快捷键

Visual Prolog 的很多菜单项都有相应的快捷键,这为偏爱键盘操作的用户

提供了方便。

为与 Microsoft 标准一致,从 Visual Prolog 7.0, Build 7001 起对一些

快捷键做了调整。

下表列出了各功能的快捷键。

Function (功能) Key(键) Edit(编辑)

Copy CTRL+C or CTRL+INS Cut CTRL+X or SHIFT+DEL Paste CTRL+V or SHIFT+INS Select All CTRL+A Select Current Word CTRL+W Delete Line CTRL+SHIFT+L Delete to the End of Line CTRL+SHIFT+E Delete to the End of Word CTRL+Del Lower Case CTRL+U Upper Case CTRL+SHIFT+U Toggle Case CTRL+ALT+U Replace CTRL+H Undo CTRL+Z Redo CTRL+Y or CTRL+SHIFT+Z Insert Predicate CTRL+SHIFT+I Size to Content (in Box Editor) SHIFT+F6 Open Code Expert CTRL+SHIFT+W Delete Object from Facts Tree CTRL+Del Retract Fact(s) CTRL+Del Qualification Dialog CTRL+SHIFT+S Zoom In CTRL+[+] or CTRL+Scroll mouse wheel UP Zoom Out CTRL+[-] or CTRL+Scroll mouse wheel DOWN Zoom to Normal CTRL+0 Comment Line(s) CTRL+ALT+% Uncomment Line(s) CTRL+ALT+SHIFT+% Insert Date Stamp CTRL+SHIFT+Y

Navigation(导航) Find CTRL+F Find Next F3 Find Text in Files CTRL+SHIFT+F

Page 211: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

203

Locate in Project Tree CTRL+T Go Back CTRL+SHIFT+F8 Go to Definition F12 or CTRL+SHIFT+C Go to Declaration CTRL+F12 or CTRL+SHIFT+D Go to Line CTRL+F2 Go to Next Error F8 Go to Previous Error SHIFT+F8 Go to Position on Clipboard SHIFT+F2

Compile(编译) Compile CTRL+F7 Build CTRL+SHIFT+B Stop Build CTRL+Break Build Resource Only ALT+F8 Rebuild Project CTRL+SHIFT+ALT+B Run CTRL+F5 Run in Window ALT+F5

Debug(调试) Start Debugging F5 Stop Debugging SHIFT+F5 Toggle Breakpoint F9 Enable/Disable Breakpoint CTRL+F9 Breakpoint Properties ALT+F9 Trace Into F11 Step Out SHIFT+F11 Step Over F10 Run To Cursor CTRL+F10 Refresh Debug Window CTRL+R Registers Window CTRL+ALT+G Breakpoints Window CTRL+ALT+B CallStack Window CTRL+ALT+C Disassembly Window CTRL+ALT+D Variable Window CTRL+ALT+V Memory Dump 1 Window CTRL+ALT+M Threads Window CTRL+ALT+H Go to Address CTRL+G Go to Executing Predicate Source CTRL+E Go to Facts Database CTRL+ALT+F

Project(工程) New Project CTRL+SHIFT+N Open Project CTRL+SHIFT+O Add Module to Project CTRL+SHIFT+A Create Project Item CTRL+N

Page 212: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

204

Create Project Item in a New Package CTRL+ALT+N

IDE(集成开发环境) Close All Editors CTRL+Q Close All Inactive Editors CTRL+SHIFT+Q Exit IDE ALT+F4 Close All Editors CTRL+Q Project Window CTRL+ALT+P Project Settings ALT+F7 Save File F2 Save Project CTRL+S Source Browser CTRL+B Output to Messages Window CTRL+ALT+O Error Window CTRL+ALT+E Print CTRL+P Context Help F1

Page 213: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

205

18. Visual Prolog 应用程序的发布

运行 Visual Prolog IDE 生成的目标模块需要计算机中有一些 Visual

Prolog 的运行时 DLL。因此,这类运行时 DLL 应该与发布模块(可以是应用程序、

DLL 或 COM 对象)一同提供。IDE 可以提供辅助支持来准备这些需要与 Visual

Prolog 生成的目标模块一道发布的文件。可以在工程设置对话框中将所有这类

运行时 DLL 文件复制到工程 终目录中。

打开一个工程的工程设置对话框,如下图:

注意,当打开这个对话框创建新工程时,表中的栏目是可编辑的,与上图不

一样。工程的 终子目录通常是工程的 EXE 子目录,可以在“目录”标签下看到

(也可以在这里由缺省的 EXE 改为需要的),如下图:

Page 214: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

206

IDE 会自动复制 Visual Prolog 运行时 DLL 到工程 终目录。当 IDE 报告

说成功构造目标工程模块后,在工程 终目录中可以看到<ProjectName>.exe 或

<ProjectName>.dll 这样的工程目标模块,还可以看到如下图示的一些 Visual

Prolog 运行时 DLL 文件:

向用户发布工程目标模块时,用户运行目标模块的计算机上可能并没有安装

Visual Prolog,所以必须提供所有这些 IDE 复制到 终目录中的 DLL 文件。

注意:安装有 Visual Prolog 的计算机上,所有 Visual Prolog 运行时 DLL

在安装时都复制到了 Windows 系统目录中。这样的计算机上运行 Visual Prolog

目标模块不需要再添加 DLL。因此,仅复制在别的计算机上生成的目标模块本身

就可以在这样的计算机上运行。不过要注意,如果这两台计算机上的 Visual

Prolog 版本不一样,可能运行也会有问题。此时,就需要把运行时 DLL 和目标

模块一道复制后运行。这种情况建议下把运行时 DLL 复制到目标模块相同的目录

中。

如果用户的计算机没有安装(也不打算安装)Visual Prolog,可以把运行

时 DLL 复制到系统目录中,这样的话,用同一 Visual Prolog 版本构造的多个目

标模块就可以共同使用这些运行时 DLL 而不必各搞一套。当然,Visual Prolog

运行时 DLL 可以放在任何 Windows Path 环境变量中登记过的目录下。

Prolog Development Center A/S 允许开发者向用户提供 IDE 复制到 终

目录中的 Visual Prolog 运行时 DLL。

Page 215: Visual Prolog V7 · 译者说明 这里译出的内容,取自Visual Prolog V7.3的主要帮助文件VIP.CHM 中的 Integrated Development Environment (IDE)。 IDE 是Visual Prolog

207

19. Visual Prolog 的限制

在Visual Prolog 中使用 VPI 包编写的窗口程序有如下限制:

1. 多同时打开的元文件窗口(metafile windows)数是 4。Internal

windows (with window type vpiDomains::w_Metafile) used during

metafile recording (created by vpi::mf_Open).

2. 多同时打开的图片窗口数是 4。Internal windows (with window type

vpiDomains::w_Metafile) used during picture drawing (created by

vpi::pict_Open).

3. 菜单项 大长度为 250。

4. 用于用户控件标识 window 类的串, 大长度是 60。

5. DDE 应用程序可创建的 大数量的 string handles 是 12288。

6. (由谓词 vpiEditor::create/12->、vpiEditor::createHyper/13->、

vpiEditor::createWrap/13->创建的 VPI 编辑器)编辑文本的长度超过了

内部 大限制。

编辑文本长度的实际限制是数 MB,而这样的限制主要是出于对编辑器性

能(尤其是对 token coloring)的考虑。