Tivoli 服务台 6.0 开发工具包脚本语言参考

窗口处理

返回主页


注:所有 Win 函数都具有同样的返回码。此代码表在 WinAboutBox 函数中出现,并且每个 Win 函数都出现到此表的链接。


返回主页


注:这是窗口处理函数的第一部分。本部分以 WinSetColor 结束,第二部分
WinSetFont 开始。


$Desktop

说明

返回一个句柄到桌面窗口。在当前会话期间,此值是不变的。但并不永久保存此值。下次执行程序时,此常数会有一个新值。

语法

FUNCTION $Desktop: WINDOW;

注意:在 OS/2 系统中,有一些有效的消息,可以发送它们至桌面以暂停处理。例如,将 $MsgClose 发送至桌面,可以暂停程序的运行。这种运转状态由操作系统控制。

注释

$Desktop 是预定义的系统常数,它包含 OS/2 桌面或 Windows 桌面的句柄。在窗口或对话框语句中,它常常被指定为父级。

实例

KNOWLEDGEBASE Desktop;
ROUTINES
 PROCEDURE Example;
PRIVATE
ROUTINES
 (* Create a scroll window parented by the desktop with
 default event processing *)
PROCEDURE Example IS
 VARIABLES
 whdl: WINDOW;
ACTIONS
 WinCreateScrollWindow($Desktop, (*Window is a child of
                       OS/2 desktop *)
                       whdl, (* return handle
                       of new window *)
                       $NullHandler, (* Default event
                       processing *)
                       5, 5, 80, 20, (* Window location
                       and size *)
                       'Example', (* Window title *)
                       '', (* Use default font
                       *)
                       0, (* Point size is
                       ignored for
                       default *)
                       BitOr( $WinTitle, $WinBorder,
                       $WinSysMenu ));
 WinWait( whdl );
END;

另见


$KeyCode

说明

$MsgChar 事件发生时,指示用户所按的键。

注释

TSD 脚本为某些特殊的键,如光标控制键、修改键(即,那些要与其它键以组合方式按下的键,如 Control 或 Alt) 等,定义若干常数。

注: 其他信息,请参见 TSD 脚本常数

实例

EVENT MyEvent IS
ACTIONS
WHEN $Event IS $MsgChar THEN
 WHEN $KeyCode IS $KeyUpArrow THEN
 MoveUp;
 ELSWHEN $KeyDownArrow THEN
 MoveDown;
 ELSWHEN $KeyLeftArrow THEN
 MoveLeft;
 ELSWHEN $KeyRightArrow THEN
 MoveRight;
 END;
END;

另见


WinAboutBox

说明

此函数显示应用程序缺省的"关于"框。

语法

FUNCTION WinAboutBox( VAL Icon : STRING,
                     VAL AppName : STRING,
                     VAL Version : STRING ) : INTEGER;

注意

显示的信息包含 Tivoli 服务台的版权信息,并且不准备用于第三方的应用程序。

自变量说明

自变量名称 说明
Icon 与应用程序同时显示的、相关的 .bmp 文件名。
如果不能查找到文件、或文件名无效,则显示的框中不出现图形。搜索 SAIPATH 和 PATH 环境变量,寻找由此命令指定的文件。
AppName 应用程序的名称。
Version 应用程序的版本号。

实例

KNOWLEDGEBASE aboutbox;
CONSTANTS
AppName IS 'Pink Elephant Word Processor'; AppVersion IS
 'Version 3.1';
ROUTINES
Procedure DisplayAboutBox;
PRIVATE
ROUTINES
Procedure DisplayAboutBox IS
VARIABLES
ACTIONS
WinAboutBox('pink.bmp', AppName, AppVersion);
END;

返回码

返回码 说明
1 成功完成。
0 用户异常终止。用户关闭窗口或终止操作。通常以按 Esc 键或“取消”按钮,或从系统菜单中关闭窗口来实现。
-1 窗口句柄不能找到有效的窗口。该窗口可能不再存在,或该窗口不支持此命令。
-2 未知值。
-3 内存不足。
-4 没有创建。操作系统不能创建请求的对象。一个可能的原因是父级窗口句柄引用了已不存在的窗口。
-7 在窗口句柄引用的对话框中,不能找到对话框的命名控制。
-8 请求的对话框命令可能不能以命名的控制类型来执行。
-10 在操作系统级调用失败。这可能是由不适当的配置或资源不够引起的。
-12 用 NETx 语句不支持的消息,调用 SendMessagePostMessage 语句。这类消息必须是受支持的 $MsgNetx 消息之一,或用户定义的 $MsgUser + n 消息(这是为与 NETx 语句一起使用而专门定义的)。

WinClear

说明

清除窗口或滚动窗口的整个客户机区域,使其成为当前的背景颜色。

语法

FUNCTION WinClear(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 要清除的窗口的句柄。此句柄可能引用标准窗口或滚动窗口。

注释

使用 WinSetColor 函数可以改变当前的背景颜色。

实例

WHEN $Event IS $MsgPaint THEN
 WinSetColor($Handle,$WinWhite,$WinBlack);
    WinClear( $Handle );
             WinWrite($Handle,'Black');

返回码

另见


WinClearEOL

说明

使用当前的背景颜色清除窗口,从当前的光标位置清到行末。

语法

FUNCTION WinClearEOL(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 要清除的窗口的句柄。此句柄可能引用标准窗口或滚动窗口。

注释

WinClearEOL 从当前的光标位置到当前行的末端,进行清除。它不改变光标的位置。清除区域涂上当前的背景颜色。

注:可以使用 WinSetColor 函数改变当前的背景颜色。

实例

WHEN $Event IS $MsgPaint THEN
 WinSetColor($Handle,$WinWhite,$WinBlue);
             WinGoToXY($Handle,2,2);
             WinClearEOL($Handle);

返回码

另见


WinClearEOW

说明

使用当前的背景颜色清除窗口,从当前的光标位置清到窗口底端。

语法

FUNCTION WinClearEOW(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 要清除的窗口的句柄。此句柄可能引用标准窗口或滚动窗口。

注释

WinClearEOW 清除指定的窗口,从当前光标的位置到窗口的底端。清除区域涂上当前的背景颜色。光标的位置不改变。

注:可以使用 WinSetColor 语句改变当前的背景颜色。

实例

WHEN $Event IS $MsgPaint THEN
 WinGoToXY($Handle,5,10);
 WinSetColor($Handle,$WinWhite,$WinLightBlue);
 WinClearEOW($Handle);

返回码

另见


WinClearRectangle

说明

使用当前的背景颜色,清除窗口的矩形区域。

语法

FUNCTION WinClearRectangle(VAL whdl: WINDOW, VAL xLoc, yLoc,
                           width, height: INTEGER):
                           INTEGER;

自变量说明

自变量名称 说明
whdl 要清除的窗口的句柄。此句柄可能引用标准窗口或滚动窗口。
xLoc 要清除的区域左上角的 X 位置。X 坐标是以字符单元指定的。
yLoc 要清除的区域左上角的 Y 位置。Y 坐标是以字符单元指定的。
width 要清除的区域的宽度。宽度以字符单元量度。
height 要清除的区域的高度。高度以字符单元量度。

注释

WinClearRectangle 在给定的窗口内,清除指定的矩形区域。清除区域涂上当前的背景颜色。光标不移动。

注:可以使用 WinSetColor 语句改变当前的背景颜色。

实例

WHEN $Event IS $MsgPaint THEN
 WinSetColor($Handle,$WinWhite,$WinBlack);
 WinClearRectangle($Handle,5,10,40,8);
END:

返回码

另见


WinCloseWindow

说明

关闭对话框或窗口。

语法

FUNCTION WinCloseWindow(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 要关闭的对话框或窗口的句柄

注释

此函数也作为一条消息来实施,该消息被传递到对话框或窗口($MsgClose)。

实例

KNOWLEDGEBASE close;
ROUTINES
 PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
 Handle : WINDOW;
ACTIONS
 WinCreate($Desktop,
 Handle,
 $NullHandler,
 1, 1,
 80, 25,
 'Window will close shortly...',
 $WinDefaultStyle);
 SysDelay(1000);
 WinCloseWindow(Handle);
END;

返回码


WinCreate

说明

一个创建标准或类属的窗口。

语法

FUNCTION WinCreate(VAL parent: WINDOW, REF whdl: WINDOW,
                   VAL EventHandler: EVENT,
                   VAL xLoc, yLoc, width, height: INTEGER,
                   VAL title: STRING, style: INTEGER):
                   INTEGER;

注意

如果事件函数没有处理涂色消息就清除了窗口,则窗口将保留它创建时存在于其中的图像。

在执行 $MsgCreate之前,WinCreate 不返回结果。因此,在执行 $MsgCreate 之前,返回的窗口句柄之值尚未设置。但是,在处理 WinCreate 期间,$Handle 仍然可以使用。

自变量说明

自变量名称 说明
parent 要创建的新窗口的父级。
whdl 新创建的窗口的句柄以此参数返回。如果有错误,此变量被设置为 $Unknown
EventHandler 事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,则可以使用 $NullHandler 关键字。
xLoc 窗口左上角的 X 位置。X 坐标是以字符单元指定的。
yLoc 窗口左上角的 Y 坐标。Y 坐标是以字符单元指定的。
width 窗口的宽度 (X 方向),不包括边框。
height 窗口的高度 (Y 方向),不包括边框、标题条、菜单条、工具条和状态条。
title 在窗口标题条显示的标题。窗口必须有标题条,以显示标题。使用包含 $WinTitle 的风格。
style 整数位掩码,代表一组风格标志,用于控制窗口的外观。
关于可用风格标志的列表,请参见窗口风格

注释

第一个接收到的消息

当创建窗口时,按如下所示的顺序接收到下列消息:

用风格定制窗口

WinCreate 可以用于创建标准的或类属的窗口。这些窗口可包含菜单栏、工具条、状态条和其它窗口组件。

WinCreate 创建的窗口的准确外观和工作方式主要由风格自变量决定。此整数自变量是由各种标志(在下一部分中列出)组合而成的位掩码。通常用 BITOR 运算符(例如,BITOR($WinBorder$WinTitle)) 组合成这个自变量。其它方法应当小心使用;如果同一个标志被添加两次,可能会引起不希望的结果。

注意:详细信息,请参见窗口风格

为窗口创建事件处理器

一般来说,您都要将 WinCreate 创建的窗口与一个事件处理器联系起来。事件处理器是一个例行程序,处理传递到窗口的某些消息。例如,如果窗口有一个图符栏,每次用户单击其中一个图符时,窗口的事件处理器都会收到 $MsgMenu 消息(事件)。第一个事件参数(整型数)包含 1 到图符个数之间的一个数,表示选择哪一个图符。然后事件处理器可以调用某个特定的例行程序。

可以用 WinCreate 创建的窗口来接收到的各种消息记录于 TSD 脚本消息中。

实例

EVENT MainEvent IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
 WinSetIconBar($Handle,{'FILE.ICO',
               'REPORT.ICO','HELP.ICO'}:
               LIST OF STRING);
ELSWHEN $MsgMenu THEN
 WHEN $EventParm(1,INTEGER) IS 1 THEN
 HandleFileIcon;
 ELSWHEN 2 THEN
 HandleReportIcon;
 ELSWHEN 3 THEN
 HandleHelpIcon;
 END;
END;
END;
PROCEDURE MainProgram IS
VARIABLES
mainWindow: WINDOW;
ACTIONS
WinCreate($Desktop,mainWindow,MainEvent,0,0,80,20,
 'Main Window',
 BitOr($WinBorder,$WinTitle,$WinResize,
 $WinSysMenu, $WinIconBar,
 $WinAutoPos,$WinTaskList));
WinWait(mainWindow);
END;

返回码

另见


WinCreateClock

说明

创建时钟或计时器窗口。

语法

FUNCTION WinCreateClock(VAL whdlParent: WINDOW,
                        REF whdl: WINDOW,
                        VAL xLoc, yLoc, width, height, style,
                        id: INTEGER): INTEGER;

自变量说明

自变量名称 说明
whdlParent 要创建的新窗口的父级。
whdl 新窗口的句柄以此参数返回。如果有错误,此变量被设置为 $Unknown
xLoc 窗口左上角的 X 坐标。X 坐标以字符单元量度。
yLoc 窗口左上角的 Y 坐标。Y 坐标以字符单元量度。
width 窗口的宽度 (X 方向),不包括边框。宽度以字符单元量度。
height 窗口的高度 (Y 方向),不包括边框、标题条、菜单条、工具条和状态条。高度以字符单元量度。
style 时钟窗口的风格。风格标志是用 BITOR 运算符组成的。
从下列选择其一,或不做选择:
  • $ClkBorderIn - 用凹进边框(缺省值)画时钟窗口。
  • $ClkBorderOut - 画突起边框。
  • $ClkBorderNon - 不画边框。
  • $ClkBorder - 画类似于文本框的边框。

从下列选择其一,或不做选择:

  • $Clk12Hour: 12 小时制,分 AM 和 PM (缺省值)。
  • $Clk24Hour: (24 小时制)。

可选标志:$ClkHidden - 在屏幕上不显示时钟。

ID 给父级窗口的通知消息中使用的身份标识编号。使用 $MsgStartTimer 消息,在类属窗口内您可以创建计时器。

注释

WinCreateClock 可以用于创建实时(每秒)修正的时钟。缺省情况下,以系统时钟为基础,时钟开始显示日期的当前时间。然而,通过发送时间值的同时,给时钟发送 $MsgClockSet 消息,可以设置时钟,使其显示当前的时间。

例如,下一行可以用于建立一个占用时间的时钟:

 SendMessage(clockWindow,$MsgClockSet,{0,0,0}: TIME);

时钟窗口也响应 $MsgShow 消息。这就允许您创建一个时钟窗口,隐藏它,更改其时间,然后显示它。请看下面的例子:

WHEN $Event IS $MsgCreate THEN
 WinCreateClock($Handle,clockWindow,
 1,1,13,2,
 $Clk24Hour,0);
 SendMessage(clockWindow,$MsgShow,FALSE);
ELSWHEN START_TIMER THEN
 SendMessage(clockWindow,$MsgClockSet,
 {0,0,0}: TIME):
 SendMessage(clockWindow,$MsgShow,TRUE);
END;

在此例中,您位于另一个窗口的事件处理过程中。当创建窗口时,窗口也创建一个时钟,但隐藏它。当窗口接收到 START_TIMER 消息时,它将时钟时间设为 00:00:00,然后显示时钟。用户就看见了一个占用时间的时钟。

实例

VARIABLES
clock: WINDOW;
ROUTINES
EVENT WindowEvent IS
ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinCreateClock($Handle,clock,1,1,13,2,$ClkBorderIn,1);
 END;
END;

返回码

另见


WinCreateHyperViewer

说明

创建多文档界面(MDI)查看器窗口,该窗口具有基本的超文本能力。可用于“文件”、“编辑”和 Window 菜单的菜单条允许您:

用鼠标右键单击超级媒体查看器,可以访问弹出式菜单的选择项。这些菜单项允许您选择:

语法

FUNCTION WinCreateHyperViewer(VAL whdlParent: WINDOW,
                              REF whdl: WINDOW,
                              VAL fileName: STRING,
                              VAL EventFunc: EVENT,
                              VAL xLoc, yLoc, width, height:
                              INTEGER,
                              VAL title: STRING,
                              VAL style: INTEGER): INTEGER;

自变量说明

自变量名称 说明
whdlParent 要创建的新窗口的父级。
whdl 新创建的窗口的句柄以此参数返回。如果有错误,whdl 自变量将被设置为 $Unknown
fileName 要查看的文件名。如果文件不在当前目录下,搜索 SAIPATH。此文件可能是纯 ASCII 文件,或者它可能已经嵌套了超文本链接。
有关的详细信息,请参见“注释”部分。
EventFunc 事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,可以使用 $NullHandler 关键字。
xLoc 窗口的左上角的 X 位置。X 坐标以字符单元量度。
yLoc 窗口的左上角的 Y 位置。Y 坐标以字符单元量度。
width 窗口的宽度(X 方向),不包括边框。宽度以字符单元量度。
height 窗口的高度(Y 方向),不包括边框、标题条、菜单条、工具条和状态条。高度以字符单元量度。
title 在窗口标题条显示的标题。窗口必须有标题条,以显示标题。
style 整数位掩码,代表一列风格标志,用于控制窗口的外观。
有关的详细信息,请参见此语句的“注释”。

注释

WinCreateHyperViewer 可以用于创建超文本查看器。除了以指定的位置、大小和风格创建窗口外,WinCreateHyperViewer 显示指定文件的内容。假设此文件是包含带有嵌套按钮的 ASCII 文本。以高亮词出现在用户面前的按钮,是与另一个对象,如文本文件、声音文件、图像文件或程序的链接。

用下列格式定义按钮:

[[<Button text> | <command>]]

其中 <Button text> 是要以高亮文本显示给用户的文本,而 <command> 表示由单击激发的操作。

词环绕

超文本控制希望将提供的文件格式化为 Tivoli 系统超级媒体文件。这意味着,它的词将环绕文本的全部行(忽略回车),直到它在一行内查找到两个回车。

关闭词环绕并格式化缺省值

要关闭词环绕并格式化超文本窗口的缺省值,您可以使用 aseview.exe 传递 /NOWORDWARP /NOFORMAT 标志作为命令行自变量。这是用程序关闭词环绕,格式化超文本窗口缺省值的唯一方法。

WinCreateHyperviewer 命令选项

下表显示 WinCreateHyperViewer 语句的命令选项和说明:

命令选项 说明
ID 如果命令是整数,它即为按钮的标识。当用户单击按钮时,将 $MsgButton 消息送到超文本查看器窗口的事件处理器。按钮文本位于事件参数 1 (字符串)之中,而按钮标识位于事件参数 2 (整型数)之中。
如果不提供命令(即如果按钮的形式为 [[Button-text]]),当选择按钮时,事件处理器依然接收 $MsgButton 消息。但是,按钮的标识(事件参数 2,整型数)是 0。在这种情况下,如果事件处理器返回 0,则查看器将修改按钮文本,使 formButtonTextand 执行搜索操作 (请参见以下内容)。
JUMP JUMP <标记符名称> 搜索 Jump 后的文本相匹配的标记符的标记列表(有关的详细信息,请参见标记符标记)。如果查找到一个匹配,则含有标记的行位于查看器的上端,并生成一个 EventJump。超文本视图处理 EventJump,以保持文件中 "访问过的" 标记符的列表。
LABEL LABEL <标签文本>可以是任意字符串。将 $MsgLabel 消息送到窗口的事件处理器,按钮文本位于事件参数 1 (字符串)之中,标签文本位于事件参数 2 (字符串)之中。
MARKER MARKER <标记符名称> 在文本内放置一个不可见的标记符。
SEARCH SEARCH <搜索文本>在<搜索文本>的上端开始搜索当前文件。文本不能越行,除非搜索文本已嵌套了新行。除 Windows 外,搜索将区分大小写。
如果查找到文本,查看器也定位,这样包含文本的行将出现在查看器窗口的第一行。
FILE FILE <文件名> [NEW|REPLACE] [NOWORDWRAP|NOFORMAT] 打开新的文本文件。缺省情况下,新文件将替换查看器中的当前文件。如果关键字 REPLACE 跟在<文件名>之后,情况也是这样。
如果关键字 NEW 跟在<文件名>之后,将打开新的查看器窗口,以显示新文件。
查看器的大小由系统决定。
缺省情况下,使用词环绕,以便没有被至少一行空行隔开的所有各行,作为流动段来处理。
将非空行之后的第一行空行取消。NOWORDWRAP 关键字可以用于抑制此性能。 NOFORMAT 和缺省的词环绕一起使用,防止相邻的行合并,而依然环绕长行。
IMAGE IMAGE <图像文件> .BMP [SCROLL | SCALE] 打开图像查看器,并显示指定的图像文件。缺省情况下,要剪辑图像以适应查看器的尺寸。SCALE 关键字使图像按照查看器的尺寸按比例剪辑。 SCROLL 关键字剪辑图像,但同时给查看器添加滚动栏,滚动栏可以用于滚动整个图像。
PLAY PLAY <声音文件> .WAV 播放指定的音频文件。出现超文本查看器窗口,这样用户可以进行操作,以控制音频回放。
RUN RUN <应用程序名> 执行指定的应用程序。< 应用程序名> 可以是一个字符串,不仅包含可执行程序名或命令行文件名,也包含命令行自变量 ([[Windows NT|RUN F:\DOC\DOCMAN.EXE WINDOWS_NT]])。


关于类属窗口可接收的各种消息的完整列表,请参见 TSD 脚本消息

有关窗口风格标志的讨论,请参见 WinCreate 语句。

实例

KNOWLEDGEBASE WinHyper;
ROUTINES
 PROCEDURE HyperTextExample;
PRIVATE
CONSTANTS
 MENU_LIST {'File' ,'Open','/L ','Exit',''}: LIST OF STRING;
ROUTINES
 EVENT HyperTextEvent IS
 VARIABLES
 fileName: STRING;
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle,MENU_LIST);
 WinSetIconBar($Handle,{'hyp_text.ico',
 'hypimage.ico',
 'hypsound.ico','search.ico'}:
LIST OF STRING);
 ELSWHEN $MsgMenu THEN
 WHEN $MenuSelection IS 1, 101 THEN
 IF WinFileDialog($Desktop,fileName,'*.*',
                  10,10, 'Select file to view',0)
                  < 0 THEN
                  WinMessageBox($Handle,'Error',
                  $MBOk+$MBIconError,fileName);
 ELSE
 SendMessage($Handle,$MsgOpenFile,fileName,
             fileName,0);
 END;
 ELSWHEN 2 THEN
 IF WinFileDialog($Desktop,fileName,'*.bmp',
                  10,10, 'Select bitmap to view',0)
                  < 0 THEN
 WinMessageBox( $Handle, 'Error', $MBOk+
               $MBIconError,fileName );
 ELSE
 SendMessage($Handle,$MsgDisplayImage,fileName,
             fileName,0);
 END;
 ELSWHEN 3 THEN
 IF WinFileDialog($Desktop,fileName,'*.wav',10,10,
                  'Select sound to play',0)
                  < 0 THEN
                  WinMessageBox($Handle,'Error',
                  $MBOk+$MBIconError,fileName);
 ELSE
 SendMessage($Handle,$MsgPlaySound,fileName,
             fileName,0);
 END;
 ELSWHEN 4 THEN
             IF WinEditField($Desktop,fileName,0,0,30,
             'Search for?',
             BitOr($WinAutoPos,
             $WinBorder,
             $WinTitle)) < 1 THEN
 WinMessageBox($Handle,'Error',
             $MBOk+$MBIconError,fileName);
 ELSE
 SendMessage($Handle,$MsgSearch,fileName);
 END;
 ELSWHEN 103 THEN
 SendMessage($Handle,$MsgClose);
 END;
 ELSWHEN $MsgChar THEN
 WHEN $KeyCode IS $KeyAltT THEN
 SendMessage($Handle,$MsgMenu,1);
 ELSWHEN $KeyAltI THEN
 SendMessage($Handle,$MsgMenu,2);
 ELSWHEN $KeyAltA THEN
 SendMessage($Handle,$MsgMenu,3);
 ELSWHEN $KeyAltS THEN
 SendMessage($Handle,$MsgMenu,4);
 ELSE
 WinMessageBox($Handle,'Hypertext Key',$MBOK,
 $KeyCode);
 END;
 ELSWHEN $MsgButton THEN
 WinMessageBox($Handle,'Hypertext Button',$MBOK,
               'Button text' &
               $EventParm(1,STRING) &
               'Button ID ' &
               $EventParm(2,INTEGER));
 ELSWHEN $MsgLabel THEN
 WinMessageBox($Handle,'Hypertext Button',$MBOK,
               'Button text ' &
               $EventParm(1,STRING) &
               'Button Label ' &
               $EventParm(2,STRING));
 END;
 END (* Hypertext Event *);
 PROCEDURE HyperTextExample IS
 VARIABLES
 whdl: WINDOW;
 ACTIONS
 WinCreateHyperViewer($Desktop,whdl,'formman.hlp',
                      HyperTextEvent,1,1,80,25,
                      'Hyertext Test',
                      BitOr($WinBorder,$WinTitle,
                      $WinResize,$WinMenu,
                      $WinIconBar,$WinSysMenu,
                      $WinMinMax,
                      $WinAutoPos,$WinAutoSize));
                      WinWait(whdl);
 END (* Hypertext Example *);

返回码

另见

关于格式化超级媒体文件的详细信息,请参见 Tivoli 服务台开发工具包工具和公用程序指南

关于 SAIPATH 的其他信息,请参见使用 SAIPATH 进行文件搜索


WinCreateImage

说明

创建显示图像的窗口。

语法

FUNCTION WinCreateImage(VAL whdlParent: WINDOW,
 REF whdl: WINDOW,
 VAL fileName: STRING,
 VAL xLoc, yLoc, width, height:
 INTEGER,
 VAL title: STRING,
 VAL style, id: INTEGER): INTEGER;

自变量说明

自变量名称 说明
whdlParent 要创建的新窗口的父级。
whdl 新创建的窗口的句柄以此参数返回。如果有错误,则变量被设置为 $Unknown
fileName 显示的图像的文件名。图像可以是 OS/2 位图文件、Windows 位图文件或 .PCX 图像文件。
xLoc 窗口的左上角的 X 位置。X 坐标以字符单元量度。
yLoc 窗口的左上角的 Y 位置。Y 坐标以字符单元量度。
width 窗口的宽度(X 方向),不包括边框。宽度以字符单元量度。
height 窗口的高度(Y 方向),不包括边框、标题条、菜单条、工具条和状态条。高度以字符单元量度。
title 在窗口标题条显示的标题。窗口必须有标题条,用以显示标题。使用 $ImgTitle 风格。
style 控制图像窗口表示方式的整型数位图。
有关风格标志选项的信息,请参见“注释”部分。
id 当报告事件时,$MsgImage 消息为标识图像使用的标识(整型数)。

注释

用 BITOR 运算符从下列风格中可以组合图像窗口的风格。

风格 说明
$ImgScroll 图像以它在文件中的尺寸出现。窗口具有滚动栏。如果图像大于窗口,可以滚动图像。
$ImgClip 图像以它在文件中的尺寸出现。如果需要,请剪辑图像的上端和右侧,以适应窗口。
$ImgScale 图像的宽度和高度按比例缩放,以适应窗口尺寸的需要。缩放可能会使图像失真。
$ImgBorder 图像窗口具有边框。
$ImgTitle 图像窗口具有标题。也必须指定 $ImgBorder
图像窗口可以响应 $MsgSetImage 消息。当此消息带有图像文件名时,将导致图像窗口装入,并显示指定的文件。

实例

KNOWLEDGEBASE WinImage;
TYPES
 ImageRec IS RECORD
 fileName: STRING;
 whdlImage: WINDOW;
 END;
ROUTINES
 PROCEDURE ImageExample;
PRIVATE
ROUTINES
 EVENT ImageEvent(REF imageData: ImageRec) IS
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle,{'File','Open','/L','Exit',''}:
               LIST OF STRING);
 WinCreateImage($Handle,imageData.whdlImage,
                'os2logo.bmp',1,1,WinWidth($Handle),
                WinHeight($Handle),'',$ImgScroll,1);
 ELSWHEN $MsgMenu THEN
 WHEN $MenuSelection IS 101 THEN
 IF WinFileDialog($Handle,imageData.fileName,'*.bmp',
                  10,10,'Select new image', 0 ) >= 1 THEN
 SendMessage(imageData.whdlImage,
             $MsgSetImage,imageData.fileName);
 END;
 ELSWHEN 103 THEN
 SendMessage($Handle,$MsgClose);
 END;
 ELSWHEN $MsgSize THEN
 SendMessage(imageData.whdlImage,$MsgSetSize,
             $EventParm(1,INTEGER),$EventParm(2,INTEGER));
 ELSWHEN $MsgImage THEN
 WinMessageBox($Handle,'Image',$MBOK,$EventParm(1,
               INTEGER));
 END;
 END (* Image Event *);
 PROCEDURE ImageExample IS
 VARIABLES
 whdl: WINDOW;
 data: ImageRec
 ACTIONS
 WinCreate($Desktop,whdl,ImageEvent{data},0,0,0,0,
           'Image test',
           BitOr($WinBorder,$WinTitle,$WinResize,
           $WinMenu,$WinMinMax,$WinTaskList,
           $WinSysMenu,$WinAutoPos,
           $WinAutoSize));
 WinWait(whdl);
 END (* Image Example *);

返回码

另见


WinCreateMouseRect

说明

创建对鼠标单击敏感的矩形区域。

语法

FUNCTION WinCreateMouseRect(VAL whdl: WINDOW,
                            VAL xLoc, yLoc,
                            xLen, yLen, id: INTEGER):
 INTEGER;

自变量说明

自变量名称 说明
whdl 要在其中创建矩形区域的窗口的句柄。whdl 自变量可以引用一个标准窗口或一个滚动窗口。
xLoc 鼠标区左上角的 X 坐标。
yLoc 鼠标区左上角的 Y 坐标。
xLen 鼠标区的宽度。
yLen 鼠标区的高度。
id 用于标识特定鼠标区的整型数。

注释

缺省情况下,在窗口内,TSD 脚本不报告鼠标事件。然而,通过创建鼠标区可以导致报告诸如鼠标移动和鼠标单击这样的事件。鼠标区是窗口内的矩形区域。当创建鼠标区时,您给它分配一个整型数标识。随该区域内的所有鼠标事件一起,该标识也被报告给父级窗口。

当在鼠标区内发生活动时,随下列四个整型数事件参数一起,将 $MsgMouse 消息送到该区的父级窗口:

提示:每当窗口之一处理 $MsgMouse 事件时,都必须调用 WinSetMousePointer

实例

KNOWLEDGEBASE WinMouse;
ROUTINES
 PROCEDURE MouseExample;
PRIVATE
CONSTANTS
 MENU_LIST IS {'File' ,
               'Exit','',
               'Pointer type',
               'MouseDefaultPtr',
               'MouseuLArrowPtr',
               'MouseURArrowPtr',
               'MouseDRArrowPtr',
               'MouseDLArrowPtr',
               'MouseUPResizePtr',
               'MouseURResizePtr',
               'MouseRTResizePtr',
               'MouseDRResizePtr',
               'MouseDNResizePtr',
               'MouseDLResizePtr',
               'MouseLTResizePtr',
               'MouseULResizePtr',
               'MouseCrossPtr',
               'MouseHandPtr',
               'MouseHourGlassPtr',
               'MouseIBeamPtr',''}: LIST OF STRING;
ROUTINES
 EVENT MouseEvent(REF pointerType: INTEGER) IS
 ROUTINES
 PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection:
 INTEGER) IS
 ACTIONS
 WHEN selection IS 101 THEN
 SendMessage(whdl,$MsgClose);
             ELSWHEN 201 THEN
 pointerType := $MouseDefaultPtr;
 ELSWHEN 202 THEN
 pointerType := $MouseuLArrowPtr;
 ELSWHEN 203 THEN
 pointerType := $MouseURArrowPtr;
 ELSWHEN 204 THEN
 pointerType := $MouseDRArrowPtr;
 ELSWHEN 205 THEN
 pointerType := $MouseDLArrowPtr;
 ELSWHEN 206 THEN
 pointerType := $MouseUPResizePtr;
 ELSWHEN 207 THEN
 pointerType := $MouseURResizePtr;
 ELSWHEN 208 THEN
 pointerType := $MouseRTResizePtr;
 ELSWHEN 209 THEN
 pointerType := $MouseDRResizePtr;
 ELSWHEN 210 THEN
 pointerType := $MouseDNResizePtr;
 ELSWHEN 211 THEN
 pointerType := $MouseDLResizePtr;
 ELSWHEN 212 THEN
 pointerType := $MouseLTResizePtr;
 ELSWHEN 213 THEN
 pointerType := $MouseULResizePtr;
 ELSWHEN 214 THEN
 pointerType := $MouseCrossPtr;
 ELSWHEN 215 THEN
 pointerType := $MouseHandPtr;
 ELSWHEN 216 THEN
 pointerType := $MouseHourGlassPtr;
 ELSWHEN 217 THEN
 pointerType := $MouseIBeamPtr;
 END;
 END (* Process Menu *);
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle,MENU_LIST);
 ELSWHEN $MsgPaint THEN
 WinClear($Handle);
 WinCreateMouseRect($Handle,1,1,
                    WinWidth($Handle),
                    WinHeight($Handle),1);
 ELSWHEN $MsgMenu THEN
 ProcessMenu($Handle,$MenuSelection);
 ELSWHEN $MsgMouse THEN
 WinSetMousePointer($handle,pointerType);
 END;
 END (* Mouse Event *);
 PROCEDURE MouseExample IS
 VARIABLES
 whdlMain: WINDOW;
 ACTIONS
 WinCreate($Desktop,whdlMain,MouseEvent{
           $MouseDefaultPtr},
           0,0,60,20,
           'Mouse example',
           BitOr($WinBorder,$WinTitle,
           $WinResize,$WinMenu,
           $WinVScroll,$WinMinMax,
           $WinTaskList,
           $WinSysMenu,$WinAutoPos));
 WinWait(whdlMain);
 END (* Mouse Example *);

返回码

另见

其他信息,请参见鼠标指针鼠标消息


WinCreateScrollWindow

说明

创建需要时自动重新喷涂其自身的无模型的滚动窗口。

语法

WinCreateScrollWindow(VAL whdlParent: WINDOW,
                      REF whdl: WINDOW,|
                      VAL EventHandler: EVENT,
                      VAL xLoc, yLoc, width, height: INTEGER,
                      VAL title, font: STRING,
                      VAL pointSize, style: INTEGER):
                      INTEGER;

自变量说明

自变量名称 说明
whdlParent 滚动窗口的父级窗口。
whdl 新创建的窗口的句柄以此参数返回。如果有错误,变量将被设置为 $Unknown
EventHandler 事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,可以使用 $NullHandler 关键字。
xLoc 窗口左上角的 X 位置。以字符单元量度 X 和 Y 坐标。
yLoc 窗口左上角的 Y 坐标。
width 窗口的宽度(X 方向),不包括边框。宽度以字符单元量度。
height 窗口的高度(Y 方向),不包括边框、标题条、菜单条、工具条和状态条。高度以字符单元量度。
title 在窗口标题条显示的标题。窗口必须有标题条,以便显示标题。使用 $WinTitle 风格。
font 可用的系统字体的名称。
pointSize 在滚动窗口内要使用的字体的点大小。
style 整数位掩码,代表一列风格标志,用于控制窗口的外观。
有关的详细信息,请参见 WinCreate 的“注释”部分。

注释

第一个接收到的消息

当创建滚动窗口时,按如下所示的顺序接收下列消息:

跟踪并重新涂滚动窗口

WinCreateScrollWindow 可以用于创建虚拟的滚动窗口。在类属窗口内,编程器负责了解窗口的内容,并一收到 $MsgPaint 消息,就重新显示窗口。滚动窗口"了解"它们的内容。编程器通过 WinWriteWinWriteLN 等将信息写入其中。

注:关于滚动窗口可以生成并接收的消息的列表,请参见 TSD 脚本消息

定制滚动窗口

滚动窗口可以包含工具条、菜单条、状态条和任何其它可用于类属窗口的组件。

实例

KNOWLEDGEBASE Scroll;
CONSTANTS
 MENU_OPEN IS 101;
 MENU_EXIT IS 102;

 MENU_LIST IS {'~File','~Open','E~xit',''}:
 LIST OF STRING;
TYPES
 EditorData IS RECORD
 statusLine: STRING;
 lines: LIST OF STRING;
 END;
ROUTINES
 PROCEDURE FileView;
PRIVATE
ROUTINES
 EVENT EditorEvent(REF editorData: EditorData) IS
 ROUTINES
 PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS
 VARIABLES
 fileName: STRING;
 editFile: FILE;
 result: INTEGER;
 ACTIONS
 WHEN selection IS MENU_OPEN THEN
 WinFileDialog($Handle,fileName,'*.KB',5,5,
               'Select file to edit',0);
 IF FOpen(editFile,fileName,$Read) > 0 THEN
 FReadText(editFile,editorData.lines);
 FClose(editFile);
 editorData.statusLine := ' File: ' & fileName;
 WinClear($Handle);
 WinWriteLN($Handle,editorData.lines);
 PostMessage($Handle,$MsgPaintStatus);
 ELSWHEN MENU_EXIT THEN
 SendMessage($Handle,$MsgClose);
 END;
 END;
 END (* Process Main Menu *);
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle, menuList);
 editorData.statusLine := 'File:';
 ELSWHEN $MsgMenu THEN
 ProcessMainMenu($MenuSelection);
 ELSWHEN $MsgPaintStatus THEN (* Status Bar *)
 WinClear($Handle);
 WinWrite($Handle,editorData.statusLine);
 END;
 END (* Editor Event *);
 PROCEDURE FileView IS
 VARIABLES
 whdl: WINDOW;
 ACTIONS
 WinCreateScrollWindow($Desktop,whdl,EditorEvent,
                       0,0,0,0,
                       'KML File viewer',
                       $SystemMonospaced,10,
                       BitOr($WinBorder,$WinTitle,
                       $WinResize, $WinSysMenu,
                       $WinMenu,$WinStatus,
                       $WinAutoPos,$WinAutoSize,
                       $WinVScroll,$WinHScroll,
                       $WinTaskList));
 WinWait(whdl);
 END (* File View *);

返回码

另见

其他信息,请参见窗口风格


WinEditField

说明

显示一行编辑器,用于编辑值的数据类型。

语法

FUNCTION WinEditField(VAL parent: WINDOW, REF value: ANY,
 VAL xLoc, yLoc, length: INTEGER, title:
 STRING,
 VAL style: INTEGER):
 INTEGER;

自变量说明

自变量名称 说明
parent 要创建的新窗口的父级。在 Windows 中,如果调用 WinEditField 时禁用父级窗口,则 WinEditField 窗口不剪辑父级窗口。
在 Windows 中,如果 $Desktop$WinModal 联合被指定作为父级,则用 WinEditField 创建的窗口是无模型的。
下一部分说明风格标志,如 $WinModal
xLoc 窗口左上角的 X 位置。
yLoc 窗口左上角的 Y 位置。
length 窗口的宽度(X 方向),不包括边框。
title 在窗口标题条上显示的标题。窗口必须有标题条,以显示标题。使用 $WinTitle 风格。在 Windows 中,如果您不指定此自变量,则自动添加 $WinTitle 常数。
style 包含控制窗口的外观的一列风格标志的整型数。有关详情,请参见可用的风格标志部分。

注释

在表中列出了有关 WinEditField 的可用的风格标志。

风格标志 说明
$WinAutoPos 系统决定窗口的最佳位置。忽略 xLoc 和 yLoc 参数。
$WinAutoSize 系统决定窗口的最佳大小。忽略 xLen 和 yLen 参数。
$WinBorder 窗口具有类似于对话框的边框。有些风格需要一个边框。在 Windows 中,如果您不指定 $WinBorder 常数,则会自动添加它。
$WinDefaultStyle 系统定义的、由 $WinBorder$WinResize$WinTitle$WinSysMenu 组合的缺省风格。
$WinField 窗口具有单像素边框(象对话框中的控制)。此风格与 $WinBorder 互斥。
$WinInvisible 创建隐藏的窗口。必须向它发送 $MsgShow,它才能变为可见窗口。
$WinModal 当创建编辑字段时,它是一个模型窗口。编辑字段窗口和所有其它子窗口的父级窗口被禁用。
$WinNone 窗口是空的,没有边框、标题条或其它组件。
$WinTaskList 将窗口标题输入到系统的任务列表。用户可以从任务列表中激活窗口。此种风格一般用于应用程序的主窗口。
$WinTitle 窗口具有标题条。如果不存在此种风格,则不显示标题,即使指定标题作为其中的一个参数。标题条可以使窗口移动。

实例

VARIABLES
 intVal: INTEGER;
ACTIONS
 WinEditField($Desktop,intVal,0,0,30,'Integer',
              $WinAutoPos+$WinBorder+
              $WinTitle);

返回码

另见

DlgBox


WinEnableWindow

说明

启用或禁用对话框(或窗口)。

语法

FUNCTION WinEnableWindow(VAL whdl: WINDOW, VAL state:
                         BOOLEAN): INTEGER;

自变量说明

自变量名称 说明
whdl 要更改其启用状态的对话框或窗口的句柄。
state 如果要"启用"窗口,则状态设为 TRUE;如果要"禁用"窗口,则状态设为 FALSE。

注释

此函数也可以作为一条消息来实现,可以将其传递到对话框或窗口($MsgEnable)。

实例

KNOWLEDGEBASE enable;
ROUTINES
 PROCEDURE Main;
PRIVATE
ROUTINES
 PROCEDURE Main IS
 VARIABLES
 Handle : WINDOW;
 ACTIONS
 WinCreate($Desktop,
           Handle,
           $NullHandler,
           1, 1,
           80, 25,
           'Test Window',
           $WinDefaultStyle);
 WinEnableWindow(Handle, FALSE);
 SysDelay(1000);
 WinEnableWindow(HANDLE, TRUE);
 WinWait(Handle);
END;

返回码


WinFileDialog

说明

显示文件选择项对话框。

语法

FUNCTION WinFileDialog(VAL whdlParent: WINDOW,
                       REF fileName: STRING,
                       VAL startMask: STRING,
                       VAL xLoc, yLoc: INTEGER,
                       VAL title: STRING, VAL style: INTEGER
                       ): INTEGER;

自变量说明

自变量名称 说明
whdlParent 要创建的新窗口的父级。
fileName 返回用户选择的文件名。如果用户取消对话框,则不会改变此值。
startMask 可以使用原始文件的选择掩码,* 和 ? 通配符。
xLoc 窗口左下角的 X 位置。
yLoc 窗口左下角的 Y 位置。
title 在窗口标题条显示的标题。窗口必须有标题条,以显示标题。使用 $WinTitle 风格。
style 文件对话框的风格。可能值为:
  • $FileDlgCenter - 屏幕上的中心文件对话框。
  • $FileDlgOpen - 创建“打开文件”对话框。
  • $FileDlgSaveAs - 创建“保存为”对话框。现有文件名以为未激活状态显示。

注释

当要提示用户输入文件名时,无论是打开新文件,或允许用户保存文件为新文件,可以使用 WinFileDialog。通过设置 startMask 自变量,可以使用 WinFileDialog 选择指定的文件类型(例如,对于知识库,请使用 *.kb)。

提示:xLoc 和 xLoc 参数在 Windows 中没有作用。

实例

VARIABLES
 fileName: STRING;
ACTIONS
 IF WinFileDialog($Desktop,fileName,'*.TXT',
 10,10, 'Select file to edit',0) > 0 THEN
 LoadAndEdit(fileName);
 END;

返回码

另见


WinGetXPos

说明

查询任何有效窗口句柄(窗口或对话框)的 X 坐标位置。位置 00 指的是左上角。

语法

FUNCTION WinGetXPos (VAL whdl: Window): Integer;

自变量说明

自变量名称 说明
whdl 查询 X 位置的窗口句柄

注释

WinGetXPos 不同于 WinX,因为 WinX 返回窗口内的字符位置,而 WinGetXPos 则查询窗口或对话框的左上角。X 坐标位置成功返回。

实例

KNOWLEDGEBASE GetPos;
ROUTINES
 PROCEDURE Main;
PRIVATE
ROUTINES
 PROCEDURE Main IS
 VARIABLES
 Handle : WINDOW;
 x,y : INTEGER;
 ACTIONS
 WinCreateScrollWindow($Desktop,
                       Handle,
                       $Nullhandler,
                       10,10,75,25,
                       'Test',
                       $SystemMonospaced,10,
                       $WinDefaultStyle);
                       x := WinGetXPos(Handle);
 y := WinGetYPos(Handle);
 WinWriteLN(Handle, 'The upper left corner
            of the window is at
            (' & x & ', ' & y & ')');
 WinWait(Handle);
 END;

返回码

另见

WinGetYPos


WinGetYPos

说明

查询任何有效窗口句柄(窗口或对话框)的 Y 坐标位置。位置 00 是窗口或对话框的左上角。

语法

FUNCTION WinGetYPos (VAL whdl: Window): Integer;

自变量说明

自变量名称 说明
whdl 查询 Y 位置的窗口句柄

注释

WinGetYPos 不同于 WinY,因为当 WinY 返回窗口内的字符位置时,而 WinGetYPos 查询窗口或对话框的左上角。

实例

请参见 WinGetXPos 语句的实例

返回码

另见

WinGetXPos


WinGoToXY

说明

将位置指针移到新位置。

语法

FUNCTION WinGoToXY(VAL whdl: WINDOW, VAL xLoc, yLoc:
 INTEGER): INTEGER;

自变量说明

自变量名称 说明
whdl 窗口的句柄,要执行该窗口上的操作。
xLoc 当前位置指针的新 X 位置。
yLoc 当前位置指针的新 Y 位置。

实例

WHEN $Event IS $MsgChar THEN
 WHEN $EventParm(1,INTEGER) IS $KeyUpArrow THEN
                 WinGoToXY(Handle,$WinX($Handle),$WinY($Handle)-1);
 ELSWHEN $KeyRightArrow THEN
 WinGoToXY(Handle,$WinX($Handle)+1,$WinY($Handle));
 END;
END;

返回码

另见


WinHeight

说明

查询窗口的高度并返回高度,以字符单元表示。

语法

FUNCTION WinHeight(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 窗口的句柄,要执行该窗口上的操作。

注释

WinHeight 返回给定窗口内当前客户机区域的高度。

实例

WinCreateMouseZone($Handle,1,1,
                   WinWidth($Handle),WinHeight($Handle),1);

返回码

另见


WinLoadMenuBar

说明

从资源文件装入菜单,并将其附加给指定的窗口。(替换任何以前附加的菜单)。

语法

FUNCTION WinLoadMenuBar(VAL win: WINDOW,
                        VAL resource : STRING
                        ) : INTEGER;

自变量说明

自变量名称 说明
win 表格、类属、滚动或超文本
resource 标准格式的资源字符串

注释

给表格附加菜单的捷径,是在同一 .df 文件中,提供给菜单的名称与表格的名称相同。如果表格具有菜单的风格,则自动装入菜单。

实例

KNOWLEDGEBASE loadmenu;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
 (* Global Variable to hold the Window handle of the window *)
 mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
 WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle);
 (*load the menu with id MAIN_MENU from the file loadmenu.df *)
 WinLoadMenuBar(mainWindow, 'loadmenu[MAIN_MENU]');
 WinWait(mainWindow);
END;

返回码

另见


WinLoadPopupMenu

说明

从 .df 文件中装入菜单资源,并将其联合起来作为窗口的弹出式菜单,替换任何现有的弹出式菜单。弹出式菜单自动出现,并利用平台上的正确鼠标操作。由 $MsgMenu 从弹出式菜单中报告选择项。

语法

FUNCTION WinLoadPopupMenu( VAL whdl: WINDOW,
                          VAL menu: STRING,
                          ) : INTEGER;

自变量说明

自变量名称 说明
whdl 要更改其标题文本的对话框表格或窗口的句柄
menu 标准文件的完全匹配的名称,该文件说明菜单到创建菜单

注释

当使用 WinLoadPopupMenu 时,通过平台上的正确鼠标操作,菜单自动出现。当用户选择菜单项时,将 $MsgMenu 送到窗口。这与以前的函数 WinPopup 不同。在 WinPopup 中,用户一定要捕捉到正确的鼠标操作,并调用 WinPopup 才显示弹出式菜单。 WinPopup 将返回已选菜单项的标识。

实例

KNOWLEDGEBASE loadpop;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
 (* Global Variable to hold the Window handle of the window *)
 mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
 WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle);
 (* load the menu with id MAIN_MENU from the file loadmenu.df *)
 WinLoadPopupMenu(mainWindow, 'loadmenu[MAIN_MENU]');
 WinWait(mainWindow);
END;

返回码

另见

WinSetPopupMenu


WinLoadToolBar

说明

从资源文件中装入工具条,并将其附加给指定的窗口。(替换任何以前附加的工具条)。

语法

FUNCTION WinLoadToolBar(VAL win: WINDOW,
 VAL resource : STRING
 ): INTEGER;

自变量说明

自变量名称 说明
win 表格、类属、滚动或超文本
resource 标准格式的资源字符串

注释

给表格附加工具条的捷径,是在同一 .df 文件中,指定工具条的名称与表格的名称相同。如果表格具有工具条的风格,则自动装入工具条。

实例

KNOWLEDGEBASE loadtool;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
 (* Global Variable to hold the Window handle of the window *)
 mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
 WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle);
 (* load the toolbar with id MAIN_TOOLBAR from the file loadtool.df *)
 WinLoadToolBar(mainWindow, 'loadtool[MAIN_TOOLBAR]');
 WinWait(mainWindow);
END;

返回码

另见


WinMenuCheckItem

说明

设置菜单项的效验状态。

语法

FUNCTION WinMenuCheckItem(VAL whdl: WINDOW,
                          VAL id: STRING,
                          VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW,
                          VAL id: INTEGER,
                          VAL newState: BOOLEAN): INTEGER;

自变量说明

自变量名称 说明
whdl 具有菜单条的窗口的句柄
id 要设置的菜单项的标识
newState 菜单项的新状态

注释

WinMenuCheckItem 允许效验或不效验菜单项。当您调用 WinMenuItemIsChecked 时,可以测验给定选项的当前的效验状态。

注:用字符串或整型数可以标识菜单项。

实例

WinMenuCheckItem($Handle,204,TRUE);

返回代码

另见


WinMenuEnableItem

说明

设置菜单项的启用或禁用状态。

语法

FUNCTION WinMenuEnableItem(VAL whdl: WINDOW,
                           VAL id: STRING,
                           VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW,
                           VAL id: INTEGER,
                           VAL newState: BOOLEAN): INTEGER;

自变量说明

自变量名称 说明
whdl 具有菜单条的窗口的句柄
id 要设置的菜单项的标识
newState 菜单项的新状态

注释

WinMenuEnableItem 可以用于启用或禁用菜单项。禁用项是不可用的。用下列方法,可以使用 $SysMenuCloseItem 常数启用或禁用窗口的系统菜单上的“关闭”项:

(* This line enables the Close item *)
WinMenuEnableItem (myWindow, $SysMenuCloseItem, TRUE);
(* This line disables the Close item *)
WinMenuEnableItem (myWindow, $SysMenuCloseItem, FALSE);

注:用字符串或整型数可以标识菜单项。

实例

WinMenuEnableItem($Handle,204,TRUE);

返回码

另见


WinMenuItemIsChecked

说明

进行测验,以查看菜单项是否是当前效验的。

语法

FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW,
                              VAL id: STRING): BOOLEAN;
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW,
                              VAL id: INTEGER): BOOLEAN;

自变量说明

自变量名称 说明
whdl 具有菜单条的窗口的句柄
id 要设置的菜单项的标识

注释

TSD 脚本允许您建立选择项的菜单条。您可以效验给定的菜单项,以查看它是否是通过调用 WinMenuItemIsChecked 并传递以下两项来选择的:

注:用字符串或整型数可以标识菜单项。

实例

IF WinMenuItemIsChecked($Handle,204) THEN
 CarryOutAction;
END;

返回码

另见


WinMessageBox

说明

显示消息框,并返回用户选择项。(消息文本限制在 512 字符内。)

语法

FUNCTION WinMessageBox(VAL whdlParent: WINDOW,
                       VAL title: STRING,
                       VAL style: INTEGER,
                       VAL message: STRING): INTEGER;

注意

事件处理器和 DDE

当处理 $MsgDDEInitiate 消息,请不要使用 WinWait$MsgDDEInitiate 向应用程序广播消息,并在返回响应之前锁定消息队列。同时 WinWait 语句激活也从消息队列中等待应答的事件处理器。WinWait 防止其它应用程序向队列发送消息。这会造成死锁,并有效地锁定用户界面。

自变量说明

自变量名称 说明
whdlParent 消息框的父级。如果它是 $Desktop,消息框不能是模型。
title 在窗口标题条显示的标题。窗口必须有标题条,以便显示标题。使用 $WinTitle 风格。
style 消息框的风格。这是控制消息框的外观和表现方式的位掩码。
有关风格选项的说明,请参见“注释”部分。
messageText 显示的消息文本。支持词环绕和新行。(限制在 512 个字符内。

注释

消息框的说明

消息框是用 WinMessageBox创建的简单对话框。不需要创建 .df 文件或使用“界面设计器”。

当使用 WinMessageBox 时,您只可以添加标题、文本字符串 (消息 ),最多可达三个按钮。您不能添加其它的文本框或控制。

定制消息框

消息框的风格是下列设置的组合:

风格名称 说明
按钮风格 指示出现在消息框内的按钮选项。
图符风格 指示显示在消息框内的图符类型。
缺省按钮 指示哪一个按钮为缺省的按钮。
模型 指示消息框的模型。这将确定在响应消息框之前,用户是否可以做其它的事情。
标题 在 OS/2 中,如果给窗口添加标题条,您必须指定 $WinTitle 常数。在 Windows 中所有窗口自动拥有标题条。

要创建消息框的风格,请选择下列按钮风格之一:

选择零个或多个下列图符风格:

选择零个或一个下列缺省按钮:

选择零个或一个下列模型:

如果消息框有“取消”按钮,则 Esc 键关闭消息框,并且 WinMessageBox 返回 $MBResultCancel。如果没有“取消”键,则 Esc 键不起作用。只在内部错误条件下,才返回$MBResultError

根据消息文本和标题长度,消息框自动决定其大小。消息框最高可达屏幕高度的三分之二。

实例

WinMessageBox ($Desktop,'Error',$MBOK+$MBIconError,
               'Unable to open file');

返回码

另见

关于风格标志的列表,请参见消息框风格


WinParent

说明

窗口的父级,该窗口被传递为其自变量。

语法

FUNCTION WinParent(VAL whdl: WINDOW): WINDOW;

自变量说明

自变量名称 说明
whdl 窗口的句柄,该窗口的父级被请求的。

实例

VARIABLES
 parent: WINDOW;
ACTIONS
 parent := WinParent($Handle);

返回码

返回窗口的父级,该窗口被传递为其自变量。

另见


WinSetColor

说明

设置窗口的当前的画图颜色。画图颜色确定文本颜色和背景颜色。

语法

FUNCTION WinSetColor(VAL whdl: WINDOW, VAL foreGround:
                     INTEGER; VAL backGround: INTEGER):
                     INTEGER;

自变量说明

自变量名称 说明
whdl 窗口的句柄,要执行该窗口上的操作。
foreGround 新的前景画图颜色。有关颜色常数的完整列表,请参见“注释”部分。
backGround 新的背景画图颜色。有关颜色常数的完整列表,请参见“注释”部分。

注释

预定义的颜色常数

下列为可用的预定义的颜色常数:

注:$WinDefaultColor 为窗口选择系统缺省的前景或背景。

在用 $WinOpaque 作为背景颜色调用 WinSetColor 之前,$WinTransparent 将所有文本输出操作写入透明文本。透明文本为缺省值。

$WinOpaque 将所有文本输出操作写入不透明文本。即以当前的背景颜色清理矩形区内的文本。在以 $WinTransparent 为背景色调用 WinSetColor 之前,$WinOpaque 保留有效。

访问操作系统定义的颜色

使用下列预定义的常数,访问由操作系统定义的用户可配置的颜色:

实例

WHEN $Event IS $MsgPaint THEN
 WinSetColor($Handle,$WinWhite,$WinBlack);
 WinClear($Handle);
END;

返回码

另见


Tivoli 服务台 6.0 开发工具包脚本语言参考

返回主页

版权所有