返回主页
在窗口化 TSD 脚本应用程序中,事件是应用程序的主要功能要素。每个事件代表可能引起某种反应的操作。这些事件来自一系列来源,其中包括:
要处理事件,请创建事件处理器。事件处理器是例行程序,它定义可在应用程序的指定区域中发生的事件类型,以及对这些事件的相应反应。事件处理器访问 $Event,其中后者是一个包含消息常量的变量。该消息常量代表正发生的活动的具体类型。本页提供关于这些消息常量,或如在这里称呼的消息的详细信息。
窗口和对话框接收用户的指令,并将信息转给 TSD 脚本应用程序。这种活动名为消息传送。
在定义事件处理器时应当说明发送和接收的消息。
该页将消息分成下列各组:
对 TSD 脚本函数的某些调用(例如,影响用户界面中的控件的那些调用)可以将消息传送给事件处理器。例如,调用对话框控件的 DlgSetFieldValue 将向该对话框的事件处理器发送 $MsgSelect。
正如本页开始所说明的那样,事件(及其消息)可以有一系列的来源。有些 TSD 脚本语句可向应用程序直接发送消息。
下表列出了这些 TSD 脚本语句和应用程序可以接收的消息。
每个消息常量代表一个由 TSD 脚本应用程序解释的数值。消息常量 $MsgUser 包含的值是 Tivoli Systems 公司保留的消息常量取值范围中的最大值。
要为应用程序创建自定义消息,请使用 $MsgUser+n,其中 n 是赋值给新消息常量的任一数值。作为一个自定义消息常量,$MsgUser+n 既可以用作一个可传送又可以用作一个可接收的消息。在本页的后面部分还可以找到与 $MsgUser+n 有关的其他信息。
本节包括下列主题:
可接收消息是由事件接收的消息。可接收消息表汇总了 TSD 脚本中的所有可接收消息。
记住这些提示将有助于解释可接收消息表:
可接收消息表
$Event | 源 | 参数 |
$MsgAccept | 对话框 | $FieldId, $FieldName |
$MsgButton | 超文本窗口,对话框 | 1=按钮文本, 2=按钮标识 |
$MsgCancel | 对话框 | $FieldId, $FieldName |
$MsgChar | 对话框 其他 |
$FieldId, $FieldName, 3=KeyCode $KeyCode |
$MsgCreate | 对话框 其他 |
$FormFile, $FormName 无 |
$MsgDDEAcknowledge | 任意 | $DDEWindow, $DDEStatus (请参见 DDE 同义词) |
$MsgDDEAdvise | 任意 | $DDEWindow, $DDETopic |
$MsgDDEData | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEExecute | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEInitAcknowledge | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEInitiate | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEPoke | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDERequest | 任意 | $DDEWindow, $DDETopic |
$MsgDDETerminate | 任意 | $DDEWindow |
$MsgDDEUnAdvise | 任意 | $DDEWindow, $DDETopic |
$MsgDestroy | 任意 | 任一窗口都是无 |
$MsgEnterField | 对话框 | $FieldId, $FieldName |
$MsgExitField | 对话框 | $FieldId, $FieldName |
$MsgFocus | 任意 | $EventParm (1,布尔值) |
$MsgHelp | 对话框 | $FieldId, $FieldName |
$MsgImage | 图像窗口的父窗口 | 1=图像标识 |
$MsgInitialize | 对话框 | $FieldId, $FieldName, 3=原来的值,4=新的值 |
$MsgLabel | 超文本窗口,对话框 | 1=按钮文本,2=按钮标签 |
$MsgMandField | 对话框 | $FieldId, $FieldName |
$MsgMouse | 鼠标区 | 1=标识,2=鼠标活动,3=X,4=Y |
$MsgMenu | 菜单条 工具条 |
$MenuSelection (n*100 + m) 或用户定义, $MenuId, 2=字符串 $MenuSelection (1-99) 或用户定义, |
$MsgPaint | 类属 | 无 |
$MsgPaintStatus | 包含状态条的 任何对话框或窗口 |
无 |
$MsgPageChange | 包含记事簿的任何对话框 | 1 = 在页更改发生之前的当前页名称 2 = 现在的当前页(即新的页)名称 |
$MsgPageChangeRequest | 包含记事簿的任何对话框 | 1 = 在页更改发生之前的当前页名称 2 = 现在的当前页(即新的页)名称 |
$MsgScroll | 类属窗口 | 1=$WinHScroll/$WinVScroll, 2=拇指场所 |
$MsgSelect | 对话框 | $FieldId, $FieldName, 3=原来的值,4=新的值 |
$MsgSize | 可滚动类属窗口 | 1=窗口宽度,2=窗口高度 |
$MsgTimer | 任意 | 1=计时器标识 |
$MsgUser+n | 任意 | 属于发送者和接收者的详细信息。 |
实际上,每个消息常量是 $Event 语句的一个参数。但是,消息常量的定义包括附加信息或事件参数。例如,如果用户在对话框上选择了一个按钮,应用程序将接收到 $MsgButton 消息常量。为该消息常量定义的事件参数是所选按钮的字段名和字段标识。
在接收 $MsgButton 消息时,可以通过使用消息同义词来获得事件参数值。同义词提供了一种获得值的快捷方式。例如,要获得字段名的值,应当使用同义词 $FieldName。例如:
Name of Field: = $FieldName;
如果没有为某个事件参数定义同义词,可以使用 $EventParm 来获得值。要使用 $EventParm,必须指定事件参数的数值和该值的数据类型。例如,对于所有的对话框可接收消息,字段名包含在事件参数二中。要获得字段名事件参数的值,可以使用下列表示法:
$EventParm (2, string);
下面是一个实例。
EVENT ExampleEvent (REF rec : MyRecord) IS
VARIABLES
width, height : INTEGER;
ACTIONS
WHEN $Event IS $MsgSize THEN
width := $EventParm(1, INTEGER);
height := $EventParm (2, INTEGER);
ELSWHEN...
END;
END;
可以在任何可能的地方使用同义词来获得事件参数值。可接收消息表列出了每个可接收消息的事件参数和同义词。
提示:所有对话框消息都为同样的第一和第二事件参数定义了同义词:$FieldId(事件参数一)包含字段标识,$FieldName(事件参数二)
包含字段名。
传输消息时,事件参数的顺序是很重要的。其他信息息,请参见"传送消息:投递与发送"。另见 PostMessage 和 SendMessage
语句。
本节讲述可由发自对话框的事件处理器接收的消息。
提示:本节中的"
DDE 可接收消息"主题列出了 DDE 会话所涉及到的对话框中发出的可接收消息。
下表只列出发自对话框并可由事件处理器接收的消息。
$Event | 源 | 参数 |
$MsgAccept | 对话框 | $FieldId, $FieldName |
$MsgButton | 对话框 | 1=按钮文本,2=标识按钮 |
$MsgCancel | 对话框 | $FieldId, $FieldName |
$MsgChar | 对话框
|
$FieldId, $FieldName, 3=KeyCode $KeyCode |
$MsgCreate | 对话框 | $FormFile, $FormName |
$MsgDestroy | 任意 | 无 |
MsgDisplayImage | 对话框 | $ButtonText, $FieldId, $FieldName, $FileName,
$ImageFile, $ProgramArguments, $SearchText, $SoundFile, 1=整数, 2=字符串, 3=字符串, 4=字符串 |
$MsgEnterField | 对话框 | $FieldId, $FieldName |
$MsgExitField | 对话框 | $FieldId, $FieldName |
$MsgHelp | 对话框 | $FieldId, $FieldName |
$MsgImage | 图像的父图像 | 1=图像标识 |
$MsgInitialize | 对话框 | $FieldId, $FieldName, 3=oldValue, 4=newValue |
$MsgLabel | 对话框 | 1=按钮文本,2=按钮标签 |
$MsgListboxAccept | 对话框 | $FieldId, $FieldName, 3=列表框字符串,图表整数 |
$MsgMandField | 对话框 | $FieldId, $FieldName |
$MsgMouse | 鼠标区 | 1=标识,2=鼠标活动,3=X,4=Y |
$MsgMenu | 菜单条
|
$MenuSelection (n*100 + m)
|
$MsgOpenFile | 对话框 | $ButtonText, $FieldId, $FieldName, $FileName,
$ImageFile, $ProgramArguments, $SearchText, $SoundFile, 1=整数, 2=字符串, 3=字符串, 4=字符串 |
$MsgPlaySound | 对话框 | $ButtonText, $FieldId, $FieldName, $FileName,
$ImageFile, $ProgramArguments, $SearchText, $SoundFile, 1=整数, 2=字符串, 3=字符串, 4=字符串 |
$MsgRunProgram | 对话框 | $ButtonText, $FieldId, $FieldName, $FileName,
$ImageFile, $ProgramArguments, $SearchText, $SoundFile, 1=整数, 2=字符串, 3=字符串, 4=字符串 |
$MsgSearch | 对话框 | $ButtonText, $FieldId, $FieldName, $FileName,
$ImageFile, $ProgramArguments, $SearchText, $SoundFile, 1=整数, 2=字符串, 3=字符串, 4=字符串 |
$MsgSelect | 对话框 | $FieldId, $FieldName, 3=oldValue, 4=newValue |
$MsgTimer | 任意 | 1=计时器标识 |
$MsgUser+n | 任意 | 属于发送者和接收者的详细信息 |
有几个同义词是与对话框可接收的消息一起使用的。其中用得最频繁的同义词是 $FieldId 和 $FieldName。
可接收消息表中显示的其他同义词是完全同各自的消息一起得到解释的。关于使用同义词的一般信息,请参见本页中的"消息参数和同义词"主题。
这里对可接收消息表中列出的可接收对话框消息进行说明。
接收方 | 包含该控件的任一对话框。 |
说明 | 在对话框生成一个接受事件时,将接收到 $MsgAccept。 |
事件参数 | 有两个事件参数:
|
响应 | 可以通过从事件组返回 0 来取消接受操作。 |
注 | 接受事件可以按下列方式发生:
在 OS/2 中,如果没有定义缺省按钮,而且光标不在解释 Enter 键的字段中,则在用户按下 Enter 键时生成接受事件。 |
接收方 | 任何超文本查看器窗口。 |
说明 | 在超文本查看器窗口中选择标识类型(缺省类型)的按钮时,将接收到
$MsgButton。 注:超文本查看器中的按钮代表连到另一个实体(例如,其他文件、现存文件中的另一点、图像、声音文件或可执行文件)的链接。 |
事件参数 | 有两个事件参数:
|
接收方 | 包含控件的对话框。 |
说明 | 对话框生成取消事件时,将接收到 $MsgCancel。用户选择“取消”按钮或按下 Escape 键时将生成取消事件。 |
事件参数 | 有两个事件参数:
|
响应 | 从事件组返回零可以中断取消操作。如果没有拒绝该操作,对话框将关闭。 |
接收方 | 任意对话框。 |
说明 | 用户在控件中输入该控件不能处理的字符时,将在对话框中接收到 $MsgChar。传送给事件处理器的具体字符随字段而定。通常情况下,将接收到 Control、Alt 和功能键。 |
事件参数 | 有三个事件参数:
|
响应 | 不能将 $KeyCode 参数与对话框一起使用。字符是在第三个事件参数(整数)中传送的。 |
注 | 不会将 F1 键值传送给对话框。取而代之的是,F1 键将生成一个 $MsgHelp 或显示任何现有的帮助文本。 |
接收方 | 正在创建的进程中的任一对话框。 |
说明 | $MsgCreate 是在创建对话框时,它首先接收到的消息之一。 |
事件参数 | 有四个事件参数:
|
响应 | 从事件组返回零将中断对话框的创建。DlgCreate 和 DlgBox 语句返回“未创建”错误。 |
注 | 在接收到 $MsgCreate 时,还没有显示对话框。但是下列事情已经发生:
其他信息,请参见 $MsgInitialize 消息。 |
接收方 | 任意对话框。 |
说明 | 向对话框发送 $MsgClose 时生成该消息。用户接受或关闭该对话框时生成 $MsgClose 消息。 对话框接收到 $MsgDestroy 时,其窗口句柄仍然有效,直到破坏过程结束。对话框继续接收消息,直到它从 $MsgDestroy 消息返回时为止。 |
响应 | 忽略任何响应。 |
注 | 在对话框的所有控件和子窗口都被损坏后,它将接收该消息。 |
接收方 | 任意对话框。 |
说明 | $MsgEnterField 在用户进入控件(通过按 Tab 键或在另一个控件上单击鼠标)时生成。 在将光标移动到新的控件之前接收到它。具有焦点的控件接收 $MsgExitField 消息。 |
事件参数 | 有两个事件参数:
|
响应 | 在处理该消息的同时从事件组返回零以防止光标移动到新的控件。 |
注 | 如果向新窗口的输入被拒绝,光标将返回用户刚从中退出的字段。在光标改变时,这将导致另一个 $MsgEnterField 消息的生成。 如果向该控件的返回也被拒绝,事件将被取消,任何控件都没有光标。 |
接收方 | 任意对话框。 |
说明 | $MsgExitField 在退出控件(通过按 Tab 键或在另一个控件上单击鼠标进入)时生成。该消息在光标离开控件之前被接收到。 |
事件参数 | 有两个事件参数:
|
响应 | 在处理该消息的同时从事件组返回零防止光标移动。 |
接收方 | 任意对话框。 |
说明 | $MsgFocus 在对话框失去其键盘焦点时生成。 |
事件参数 | $EventParm(1,布尔值)标识对话框是否失去焦点。 |
接收方 | 任意对话框。 |
说明 | 在用户选择“帮助”按钮、但系统不能找到该对话框或控件的帮助时生成 $MsgHelp。 |
事件参数 | 有两个事件参数:
|
接收方 | 任意对话框。 |
说明 | $MsgInitialize 是 $MsgSelect 的特殊形态,只在对话框的创建阶段生成。 $MsgInitialize 允许在创建过程中对对话框控件的值进行特殊处理。创建后,对话框控件的所有事件都被当作 $MsgSelect 消息接收。 |
事件参数 | 像 $MsgSelect 一样,$MsgInitialize 消息具有四个事件参数:
|
接收方 | 任意对话框。 |
说明 | 用户在超文本查看器窗口中选择一个 LABEL 类型的按钮时生成 $MsgLabel。 |
事件参数 | $MsgLabel 消息有两个事件参数:
|
接收方 | 任意对话框 |
说明 | $MsgListboxAccept 通告列表框中的被双击项目。 |
事件参数 | 有三个事件参数:
|
响应 | 退出该消息将阻止生成 $MsgAccept |
接收方 | 任意对话框 |
说明 | 在对话框接收到接受操作,而且必需的字段没有值时接收到 $MsgMandField。 |
事件参数 | 有两个事件参数:
|
响应 | 如果返回 FALSE,则系统不能处理该消息。 如果该消息未经处理,或事件组返回缺省值(1),系统将显示一个消息框,通知用户由于缺少必需的值,接受操作已被取消。 用户关闭消息框时,光标将移动到对话框中的第一个必需的空控件上。此移动可以生成 $MsgExitField、$MsgSelect 和 $MsgEnterField 消息。接受操作被中断。 如果事件组返回的是 1 以外的任一值,系统不作反应。应用程序必须定位鼠标并拒绝 $MsgAccept。 |
接收方 | 任意对话框。 |
说明 | 用户在对话框中的菜单条或工具条上作出选择时,将收到 $MsgMenu。 |
事件参数 | 伪参数 $MenuSelection 具有所选菜单项的下标。从工具条上进行选择将根据图符位置生成一个从 1 到 99 的值。从菜单条上进行选择将根据这个公式生成一个值:n * 100 + m 其中 n 是活动选择在主菜单条上的位置,m 是选择在子菜单上的位置。 |
注 | 该消息没有当前控件名或标识。此外,在早期版本中可以模拟菜单选择,但现在已不支持这种操作。 |
每生成一个 $MsgPaintStatus 消息,都会将状态条的当前文本位置重置为 1,1。
接收方 | 包含记事簿的任何对话框 |
说明 | 创建记事簿(设置初始页)和在任何时侯更改当前页时,记事簿事件处理器都将接收到 $MsgPageChange。事件参数指定原来的页和新的页。 |
事件参数 | 有两个事件参数:
|
注 | 在第一次显示一个记事簿(在 $MsgCreate 之后)时也能接收到该消息。在这种情况下,将把第一个参数设置为 $Unknown,而第二个参数是初始页的名称。 |
接收方 | 包含记事簿的任何对话框 |
说明 | $MsgPageChangeRequest 在更改页之前被传递。(用零来退出可以防止对页的更改。) 事件参数指定原来的页和新的页。 |
事件参数 | 有两个事件参数:
|
接收方 | 任意对话框。 |
说明 | 只要更改了控件的值,就会接收到 $MsgSelect。 接收到该消息之后,将更新实例数据以反映控件的新值。 在处理 $MsgSelect 的过程中,不能确定控件的实际值。发生这种情况是因为在 Windows 中,在调用 $MsgSelect 之前,要用字段的实际值来更新实例数据。在 OS/2 中,则在调用 $MsgSelect 之后才用字段的实际值来更新实例数据。 |
事件参数 | $MsgSelect 消息具有四个事件消息:
|
响应 | 返回值 1 来允许保留新的值。得到的消息是 $MsgExitField 和 $MsgEnterField。 |
注释 | 可以用几种方式来生成 $MsgSelect 消息。
事件参数三包含的值的数据类型取决于绑定到它的实例数据。如果未绑定标识,则数据是 $Unknown。 |
接收方 | 任意对话框。 |
说明 | 在响应一个计时器事件时接收到 $MsgTimer。 |
事件参数 | 事件参数(整数)包含计时器标识,该计时器是通过 $MsgStartTimer 传送的。 |
注 | 窗口必须设置计时器,以便接收 $MsgTimer。 |
接收方 | 具有事件处理器的任意对话框。 |
说明 | 这是一个用户定义的消息常量。 |
事件参数 | 使用用户定义消息可以传送任一事件参数。如果在
SendMessage 语句中对附加的参数赋值,则可以在事件处理器中对它们赋值。 接收窗口必须知道,对该消息来说,哪些参数是有效的。 |
注 | 所有用户定义消息必须具有一个 $MsgUser+n 值,其中,n 是选择用来赋值给新消息常量的任一数值。 |
本节讲述窗口可接收消息。
在可接收消息表中,$Event 栏中列出的项目代表消息常量。
“源”栏中列出的项目代表发送该消息的应用程序组件(对话框或窗口)的类型。
本栏中的条目确定消息的分类。例如,消息 $MsgCreate 具有源、对话框,因此是一个对话框可接收消息。该消息的其他信息,请参见"对话框可接收消息"。
"源"栏中列出的一些项目已进行了缩写。例如:
"参数"栏中列出为消息常量定义的事件参数。同义值以 $ 开头。(其他信息,请参见"窗口同义词"。)
可接收消息列表(只对窗口消息)
$Event | 源 | 参数 |
$MsgActivate | 类属窗口,滚动窗口 | 1=活动状态 |
$MsgButton | 超文本窗口,对话框 | 1=按钮文本,2=按钮标识 |
$MsgChar | 任意窗口 | $KeyCode |
$MsgCreate | 任意窗口 | 只应用于对话框 |
$MsgDestroy | 任意窗口 | 无 |
$MsgImage | 图像的父图像 | 1=图像标识 |
$MsgLabel | 超文本窗口,对话框 | 1=按钮文本,2=按钮标签 |
$MsgMouse | 鼠标区 | 1=标识,2=鼠标活动,3=X,4=Y |
$MsgMenu | 菜单条 工具条 |
$MenuSelection (n*100 + m) $MenuSelection (1-99) |
$MsgPaint | 类属 | 无 |
$MsgPaintStatus | 具有状态条的任意窗口或对话框 | 无 |
$MsgScroll | 类属窗口 | 2=拇指场所, 1=$WinHScroll / $WinVScroll |
$MsgSize | 可滚动类属窗口 | 1=窗口宽度,2=窗口高度 |
$MsgTimer | 任意 | 1=计时器标识 |
$MsgUser+n | 任意 | 属于发送者和接收者的详细信息 |
在可接收消息表(只对窗口消息)中显示的同义词在本节用它们各自的消息进行解释。关于使用同义词的一般信息,请参见"消息参数和同义词"。
接收方 | 窗口或滚动窗口。 |
说明 | 在激活或取消激活窗口或滚动窗口时接收到 $MsgActivate。 |
事件参数 | 有一个事件参数:
|
响应 | 如果窗口是活动的,它将接收到焦点。 如果取消对窗口的激活,焦点将移动到被激活的窗口。 窗口可以改变颜色,以反应窗口是不是活动的,这取决于系统配置。 |
接收方 | 超文本查看器窗口。 |
说明 | 在超文本查看器窗口中选择标识类型(缺省类型)的按钮时,将接收到
$MsgButton。 注:超文本查看器中的按钮代表连到另一个实体(例如,其他文件、现存文件中的另一点、图像、声音文件或可执行文件)的链接。 |
事件参数 | 有两个事件参数:
|
响应 | 如果按钮标识是 0,而且事件处理器返回的是 0,超文本查看器窗口将修改按钮文本并在活动文件中搜索相匹配的文本。如果找到匹配内容,将滚动文件,以便让匹配的行显示在查看器的顶端。 |
接收方 | 任意对话框。 |
说明 | 只要用户从键盘键入了活动窗口不对其进行处理的字符,就会接收到 $MsgChar。 |
事件参数 | 参数 $KeyCode 有可能被用于访问该字符。该字符可以是一个可打印字符或标准 $Key 定义之一。(关于可用键代码的完整列表,请参见 $KeyCode。) |
接收方 | 任意窗口或对话框。 |
说明 | 在对窗口或对话框中的控件进行初始化后将接收到该消息。接收到该消息后,将绘制窗口和对话框。 |
接收方 | 任意窗口。 |
说明 | $MsgDestroy 是窗口在被损坏前接收到的最后一条消息(除非损坏窗口是应用程序的一部分)。 |
注 | 接收到 $MsgDestroy 消息后,所有的子窗口仍然存在,除非它们已被显式地损坏。 |
接收方 | 任意图像窗口。 |
说明 | 图像窗口将 $MsgImage 发送出去,以通知其父窗口用户已用鼠标单击了该图像。 |
事件参数 | 事件参数(整数)具有所选图像的标识。 |
接收方 | 超文本查看器窗口。 |
说明 | 在超文本查看器窗口中选择一个 LABEL 类型的按钮时将接收到 $MsgLabel。 |
事件参数 | 有两个事件参数:
|
接收方 | 具有菜单条或工具条的任意对话框。 |
说明 | 在菜单条或工具条上作出选择时,将接收到 $MsgMenu。 |
事件参数 | $MenuSelection 包含所选菜单项的标识。 |
注 | 可以将所选菜单项的标识发送给具有菜单条的任一窗口。这将模拟用户选择菜单项的操作,该菜单项的下标包含在 MenuSelection 参数中。 从工具条上进行选择将生成一个从 1 到 99 的值,这取决于图符在工具条上的位置。 从菜单条上进行选择将根据这个公式生成一个值: n * 100 + m 其中 n 是活动选择在主菜单条上的位置,m 是选择在子菜单上的位置。 |
接收方 | 任意窗口。 |
说明 | 如果在鼠标区有鼠标活动,则将接收到 $MsgMouse。该鼠标区是由
WinCreateMouseRect 语句定义的。 |
事件参数 | $MsgMouse 具有下列事件参数:
|
注 | 每次处理 $MsgMouse 都必须调用 WinSetMousePointer。 已定义的鼠标活动包括:
其他信息,请参见 WinCreateMouseRect。 |
接收方 | 任意类属窗口。 |
说明 | 当必须重新绘制整个或部分窗口时将接收到 $MsgPaint。 |
接收方 | 任意窗口。 |
说明 | 当用户在水平或垂直滚动条上移动滚动框时,将接收到 $MsgScroll。 |
事件参数 | 有两个事件参数:
|
接收方 | 任意类属窗口或具有滚动条的窗口。 |
说明 | 设置窗口大小。 |
接收方 | 任意窗口。 |
说明 | 在响应一个计时器事件时接收到 $MsgTimer。 |
事件参数 | 事件参数(整数)包含计时器标识,该计时器是通过 $MsgStartTimer 而传送的。 |
注 | 窗口必须设置一个计时器,以便接收 $MsgTimer。 |
接收方 | 具有事件函数的任意窗口。 |
说明 | 这是一个用户定义的消息常量。 |
事件参数 | 使用用户定义消息可以传送任一事件参数。如果可以在 SendMessage 语句中对附加的参数赋值,则可以在事件函数对它们赋值。 |
注 | 所有用户定义的消息必须具有一个 $MsgUser+n 其中,n 是选择用来赋值给新消息常量的任一数值。 |
本节讲述的消息是为在 DDE 应用程序中运行的对话框或应用程序而定义的事件处理器可接收的。
$Event 栏中列出的项目代表消息常量。
“源”栏中列出的项目代表发送该消息的应用程序组件(对话框或窗口)的类型。
本栏中的条目确定消息的分类。例如,消息 $MsgCreate 具有源、对话框,因此是一个对话框可接收消息。该消息的其他信息,请参见"对话框可接收消息"。
在"源"栏中,任意代表正在运行的任意应用程序中的任意对话框或窗口项目。
"参数"栏中列出为消息常量定义的事件参数。同义词以 $ 开头。其他信息,请参见"DDE 同义词"。
下表列出的消息是为在 DDE 应用程序中运行的对话框或应用程序而定义的事件处理器可接收的。
可接收消息列表(只列出窗口消息)
$Event | 源 | 参数 |
$MsgDDEAcknowledge | 任意 | $DDEWindow, $DDEStatus |
$MsgDDEAdvise | 任意 | $DDEWindow, $DDETopic |
$MsgDDEData | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEExecute | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEInitAcknowledge | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEInitiate | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDEPoke | 任意 | $DDEWindow, $DDETopic, $DDEData |
$MsgDDERequest | 任意 | $DDEWindow, $DDETopic |
$MsgDDETerminate | 任意 | $DDEWindow |
$MsgDDEUnAdvise | 任意 | $DDEWindow, $DDETopic |
提示:不论何时接收到 DDE 消息,都应当返回 $MsgDDEAcknowledge
消息。返回 $MsgDDEAcknowledge
失败可能会导致内存丢失。
提示:如果想在接收到
$MsgDDExxx 时发送肯定应答,只需 EXIT($DDEAck)即可。如果想发送否定应答,只需 EXIT(0)即可。
DDE 消息有一组特殊的可用同义词。这些同义词是:
在使用这些标志时,请使用 BitAnd 语句来分析它们。其他信息,请参见 BitAnd。
下表列出用于说明消息的术语,这些消息是在 DDE 应用程序之间传送的。
项 | 定义 |
会话 | 两个应用程序在 DDE 会话中的信息交换。 |
伙伴 | DDE 会话成员。 |
客户机 | 在会话中向另一个应用程序请求信息的伙伴。 |
服务器 | 向客户机 DDE 伙伴提供被请求信息的伙伴。 |
应用程序/主题对 | 如果用户是 DDE 客户,这就是用户为建立与 DDE 服务器的通信链接而传送给它的内容。 反之,如果用户是 DDE 服务器,这就是用户所能提供服务的应用程序和主题的组合。 |
接收方 | 任一 DDE 伙伴(客户机或服务器)。 |
说明 | 该消息向 DDE 伙伴通知请求操作的成功或失败。响应下列任一消息都应当发送 $MsgDDEAcknowledge。
|
事件参数 (Windows) |
在 Windows 中,下列事件参数与 DDEExecute 语句一起使用。
在 Windows 中,下列事件参数用于所有其他 DDE 消息。
|
事件参数(OS/2) | 在 OS/2 中,下列事件参数与 DDEExecute 语句一起使用。
在 OS/2 中,下列事件参数与所有其他 DDE 消息一起使用。
|
注 | 如果接收到的消息是 $DDEData,则可以发送它,而不是实际的消息数据。 |
接收方 | 任意 DDE 服务器。 |
说明 | 请求 $DDETopic 所包含主题的连续更新。这是只有文本的消息。 |
事件参数(Windows) | 下列事件参数与 Windows 一起使用。
|
事件参数(OS/2) | 下列事件参数与 OS/2 一起使用。
|
响应 | 每更改一次数据,应用程序都应当执行 DDEData。 |
接收方 | 任意 DDE 客户机。 |
说明 | 有两种情况要发送该消息:
|
事件参数 | 有几个可能的事件参数:
|
出口值 | 如果使用了数据,则返回 $DDEAck。例如: EXIT ($DDEAck) |
注 | 如果发送数据来响应 DDEAdvise,那么 $DDEStatus 标志将被设置成 $DDENoData。在这种情况下,应用程序发出 DDERequest 来检索实际的数据。 |
接收方 | 任意 DDE 服务器。 |
说明 | 发送该消息来告诉服务器采取某些操作。 |
事件参数(Windows) | 在 Windows 中,使用下列事件参数。
|
事件参数(OS/2) | 下列事件参数与 OS/2 一起使用。
|
出口值 | 命令结束时,应当发送 $DDEAck。 |
注 | 定义命令串是伙伴的责任。 |
接收方 | 任意 DDE 服务器。 |
说明 | $MsgDDEInitAcknowledge 是为了响应
DDEInitiate 而被接收到的。与传送给
DDEInitiate 的应用程序或主题对相匹配的每个应用程序都发送一个具有下列项目的 $MsgDDEInitAcknowledge:
|
事件参数 | 有两个事件参数:
|
注 | 将向每个匹配的应用程序或主题对发送一个 $MsgDDEInitAcknowledge 消息。例如,如果将主题串指定为空,服务器将向它支持的每个主题发送 $MsgDDEInitAcknowledge。 |
接收方 | 任意潜在的 DDE 服务器应用程序。 |
说明 | 如果某个应用程序请求的接收应用程序是一个 DDE 服务器,则将接收到 $MsgDDEInitiate。接收应用程序必须检查 $DDEData 中的应用程序名称,以确定它是否为目标接收人。 如果该应用程序是目标接收人,它必须检查 $DDETopic 的值,以确定它能否满足该请求。 $DDEData 和 $DDETopic 中的长度为零的字符串是任一应用程序和主题都可以接受的匹配。 |
事件参数 | 有两个事件参数:
|
响应 | 调用 DDERespond。传送需要的每个主题和应用程序名称。 |
注 | 在处理 $MsgDDEInitiate 消息时,请不要使用 DlgBox、WinMessageBox 或 WinWait。 $MsgDDEInitiate 向应用程序广播消息,并在返回响应之前锁定消息队列。与此同时,每个语句启动一个也在等待消息队列的回答的事件处理器。 这些语句防止其他应用程序向该消息队列发送消息。这样会造成死锁,而死缩将有效地锁定用户接口。 |
接收方 | 任意 DDE 服务器。 |
说明 | 它包含未经请求的数据(在响应一个通知或请求消息时未发送的数据)。 |
事件参数 | 有几种事件参数:
|
响应 | 如果使用或处理了数据,接收应用程序必须发送应答($DDEAck)。 |
接收方 | 任意 DDE 服务器。 |
说明 | 这是对关于某个主题的数据的请求。 |
事件参数 | 有两个事件参数:
|
响应 | 调用 DDEData。传入被请求的信息。 |
出口值 | 如果返回了数据,则用 $DDEAck 退出。 |
接收方 | 任一 DDE 伙伴(客户机或服务器)。 |
说明 | 终止会话。两者中的任一伙伴都可以随时发送 $MsgDDETerminate。 |
事件参数 | 关于有效的状态标志列表,请参见“DDE 同义词”主题。 |
响应 | 如果调用 DDETerminate,则应当不作出响应。如果没有调用 DDETerminate,则应当调用它。 |
接收方 | 任意 DDE 服务器。 |
说明 | 它取消给定客户机或主题对的通知请求。这是只有文本的消息。 |
事件参数(Windows) | 在 Windows 中,使用下列事件参数:
|
事件参数(OS/2) | 下列事件参数与 OS/2 一起使用:
|
注 | 如果主题字符串为空,必须取消用于客户机的所有通知。 |
本节包括下列主题:
TSD 脚本程序可以向应用程序的其他部分或窗口系统传输消息。任何窗口或对话框都可以相应地发送或投递任何可传输消息。
可传输消息表列出了可以发送或投递给窗口句柄的事件消息。
$Event 栏中列出的项目代表消息常量。
“接收者”栏中列出的项目代表接收消息的应用程序组件(对话框或窗口)的类型。
“接收者”栏中列出的一些项目已进行了缩写。例如:
“投递/发送”栏指示发送消息时是使用 PostMessage、SendMessage 语句之一,还是两者都用。如果发送了一个项目,则"发送消息"主题将对其进行更完整的说明。如果投递了一个项目,则"投递消息"主题将对其进行更完整的说明。
"参数"栏包含这些消息的参数。
提示:参数的顺序是很重要的,因为只能按列出参数的顺序来使用参数。
下表列出可以发送(使用 SendMessage 语句)或投递(使用 PostMessage 语句)给窗口句柄的事件消息。
$Event | 接收者 | 投递/发送 | 参数 |
$MsgActivate | 具有框架的任意窗口 | S, P | 无 |
$MsgChar | 任意对话框 | S, P | 1=字段标识, 2=字段名称, 3=键代码 |
$MsgClockSet | 时钟窗口 | S | 时间 |
$MsgClose | 任意 | S | 无 |
$MsgDisplayImage | 超文本查看器窗口 | S, P | 1=文件名, 2=标题, 3=样式 |
$MsgEnable | 任意 | S, P | enableState |
$MsgMaximize | 包含框架的任意对话框或窗口 | S | 无 |
$MsgMenu | 具有菜单条的任意窗口或对话框 | S, P | menuSelection, 2=字符串 |
$MsgMinimize | 具有框架的任意窗口或对话框 | S | 无 |
$MsgMove | 具有框架的任意窗口或对话框 | S | 1=x, 2=y |
$MsgOpenFile | 超文本查看器窗口 | S, P | 1=文件名, 2=标题, 3=样式 |
$MsgPaint | 任意 | S, P | 无 |
$MsgPaintStatus | 具有状态条的任意窗口或对话框 | P | 无 |
$MsgPlaySound | 超文本查看器窗口 | S, P | 1=文件名, 2=标题, 3=样式 |
$MsgReadOnly | 对话框 | S | writeState |
$MsgRestore | 具有框架的任意窗口或对话框 | S | 无 |
$MsgSearch | 超文本查看器窗口 | S, P | searchText |
$MsgSetIcon | 窗口 | S | iconFile |
$MsgSetImage | 图像窗口 对话框,可滚动窗口 |
S S |
imageFile 窗口标识 |
$MsgSetSize | 具有框架的任意窗口或对话框 | S | 1=宽度, 2=高度 |
$MsgSetTitle | 具有框架的任意窗口或对话框 | S | 标题 |
$MsgShow | 任意 | S | visibilityState |
$MsgSize | 可滚动类属窗口 | S | 1=宽度, 2=高度 |
$MsgStartTimer | 具有事件处理器的任意窗口或对话框 | S | 1=计时器标识,2=间隔 注意:间隔不能超过 65535。 |
$MsgStopTimer | 具有事件处理器的任意窗口或对话框 | S | 计时器标识 |
$MsgTimer | 任意对话框 | S, P | 计时器标识 |
$MsgUpdate | 超文本查看器窗口 | S, P | 无 |
$MsgUser+n | 任意 | S, P | 属于发送者和接收者的详细信息 |
下表列出相同的可传输事件消息,并说明各个消息的影响。
事件 | 说明 |
$MsgActivate | 激活接收窗口 |
$MsgClockSet | 将时钟设置成新的时间 |
$MsgClose | 关闭窗口 |
$MsgDisplayImage | 在超文本查看器窗口中创建新的图像查看器 |
$MsgEnable | 将窗口设置成启用状态 |
$MsgMaximize | 最大化目标窗口 |
$MsgMenu | 对用户对菜单项的选择进行模拟 |
$MsgMinimize | 将目标窗口最小化成桌面上的一个图符 |
$MsgMove | 移动目标窗口的左上角 |
$MsgOpenFile | 创建一个新的超文本查看器窗口来显示文件 |
$MsgPaint | 引起目标窗口对自己的重新绘制 |
$MsgPaintStatus | 引起目标窗口对自己的状态条的重新绘制 |
$MsgPlaySound | 创建一个新的超文本查看器窗口来播放声音文件 |
$MsgReadOnly | 通知对话框将特定控件设置为只读 |
$MsgRestore | 使目标恢复其大小 |
$MsgSearch | 通知超文本查看器窗口搜索某行并将其移动到超文本查看器窗口的顶端 |
$MsgSetIcon | 设置窗口被最小化后的图符 |
$MsgSetImage | 设置图像,使其显示在图像窗口中 |
$MsgSetSize | 设置窗口的总体大小 |
$MsgSetTitle | 设置窗口标题条的内容 |
$MsgShow | 设置窗口的视觉属性 |
$MsgSize | 设置窗口的工作区大小 |
$MsgStartTimer | 为窗口启动计时器 |
$MsgStopTimer | 停止计时器 |
$MsgTimer | 对将计时器消息发送到窗口进行模拟 |
$MsgUpdate | 通知对话框根据实例记录中的数据更新其控件显示的值。 只能将该消息发送或投递给对话框。 该消息促使对话框根据其实例记录中的数据更新其控件显示的值。 该消息是使用一个命令来更改对话框中的多个字段的有用机制(与调用多个 DlgSetFieldValue 函数相对)。请更新记录中的值,并将该消息发送给对话框。 |
$MsgUser+n | 向窗口传送一个程序定义的消息 |
TSD 脚本提供两种内置的例行程序来传输消息和数据:SendMessage 和 PostMessage。发送消息和投递消息的主要区别是:SendMessage 在被调用的事件处理器完成对消息的处理之前要进行等待,而 PostMessage 则将信息放进事件队列中,允许用户通过投递例行程序来继续工作,而无需等待消息处理的结束。
不能将某些类型的消息投递给某些种类的窗口。
在传输消息时,可以相应地使用 SendMessage 或 PostMessage 语句。这些语句的语法基本相同:
SendMessage (VAL whdl: WINDOW,
VAL message: INTEGER,
[VAL or REF messageParm: ANY...]):
INTEGER;
其他信息,请参见 SendMessage 或 PostMessage。
“可传输消息”之一后的主题是按可发送(使用 SendMessage 来传输)和可投递(使用 PostMessage 来传输)来组织的。
可以使用 SendMessage 语句来将下列消息发送给窗口句柄。
发送到 | 可以发送给具有框架的任一窗口 |
说明 | 它使接收窗口变成活动窗口 |
发送到 | 可以发送给具有时钟的任一窗口 |
说明 | 将时钟设置成新的时间 |
事件参数 | 事件参数(时间)包含时钟的新时间 |
注 | 请参见 WinCreateClock |
发送到 | 可以发送给任一窗口 |
说明 | 它损坏窗口 |
发送到 | 可以发送给超文本查看器窗口 |
说明 | 创建新的图像查看器并显示指定文件 |
事件参数 | 有三个事件参数: 第一个事件参数包含显示在超文本查看器窗口中的文件名(字符串) 第二个事件参数包含显示在标题条中的标题(字符串) 第三个事件参数包含由下列样式的任一组合而组成的样式,这些样式是通过 BitOr 语句组合的:
|
发送到 | 可以发送给任一窗口。 |
说明 | 将窗口设置成启用状态。 |
事件参数 | 该事件参数包含 TRUE 或 FALSE,代表窗口的启用状态。
|
发送到 | 可以发送给具有框架的任一窗口 |
说明 | 它最大化接收窗口以填满整个屏幕 |
发送到 | 可以发送给具有菜单条的任一窗口 |
说明 | 对用户选择指定菜单选项进行模拟 |
事件参数 | 该事件参数包含所选菜单项的值(整数)。该值是通过下面这个公式来计算的n * 100 + m 其中 n 是活动选择在主菜单条上的位置,m 是选择在子菜单上的位置。 |
注 | 其他信息,请参见 WinSetMenuBar。 |
发送到 | 可以发送给具有框架的任一窗口 |
说明 | 将接收窗口最小化成一个图符 |
发送到 | 可以发送给任一窗口 |
说明 | 将窗口框架的左上角移动到指定的位置 |
事件参数 | 有两个事件参数:
|
发送到 | 可以发送给超文本查看器窗口 |
说明 | 创建新的文件查看器并显示指定文件 |
事件参数 | 有三个事件参数:
|
发送到 | 可以发送给超文本查看器窗口。 |
说明 | 创建新的声音播放器并播放指定文件。 |
事件参数 | 有三个事件参数:
|
发送到 | 可以发送给 TSD 脚本对话框 |
说明 | 设置或清除对话框中的只读标志 |
事件参数 | 该事件参数包含 TRUE 或 FALSE。
|
注 | 其他信息,请参见 DlgBox。 |
发送到 | 可以发送给具有框架的任一窗口 |
说明 | 将接收窗口恢复到原始大小(在使其最小化或最大化之前) |
发送到 | 可以发送给超文本查看器窗口。 |
说明 | 在活动超文本查看器子窗口中搜索指定文本。如果找到匹配内容,将把该匹配的行显示在查看器的顶端。 |
事件参数 | 事件参数包含要在超文本查看器窗口中搜索的字符串。 |
注 | 活动超文本查看器子窗口应当是一个文本查看器。如果是为了响应按钮消息而发送搜索消息,这就总是正确的。可以将用户定义的消息发送给具有事件函数的任意窗口。 所有用户定义的消息必须具有一个 $MsgUser 值或更大的值。使用用户定义消息可以传送任一附加参数。 接收窗口必须知道,对该消息来说,哪些参数是有效的。如果可以在 SendMessage 语句中对附加的参数赋值,则可以在事件函数中它们赋值。 |
发送到 | 可以发送给类属窗口、滚动窗口、超文本查看器窗口或对话框。 |
说明 | 设置最小化窗口时所显示的图符。 |
事件参数 | 事件参数包含要显示的图符文件名(字符串)。 |
发送到 | 可以发送给图像窗口。 |
说明 | 设置图像。 |
事件参数 | 事件参数包含要显示的图符文件名(字符串)。该图像可以是 OS/2 位图文件、Windows 位图或 .PCX 图像文件。 |
注 | 其他信息,请参见 WinCreateImage。 |
发送到 | 可以发送给任一窗口 |
说明 | 设置窗口大小(包括框架、标题栏和其他元素) |
事件参数 | 有两个事件参数:
|
发送到 | 可以发送给具有标题条的任一窗口 |
说明 | 将标题条文本设置成指定文本 |
事件参数 | 该事件参数包含要在标题条中显示的文本(字符串) |
发送到 | 可以发送给任一窗口 |
说明 | 设置窗口的可视性 |
事件参数 | 该事件参数包含 TRUE 或 FALSE,指示窗口是可见的(TRUE)还是不可见的(FALSE) |
发送到 | 可以发送给类属窗口或滚动窗口。 |
说明 | 将窗口的用户区大小设置成指定的高度和宽度。相应地调整窗口框架的大小。 |
事件参数 | 有两个事件参数:
|
发送到 | 可以发送给类属窗口或滚动窗口。 |
说明 | 为窗口启动一个系统计时器。计时器将根据指定的时间间隔向该窗口发送 $MsgTimer 消息。 |
事件参数 | 有两个事件参数:
|
注 | 在向窗口发送 $MsgTimer 消息时,操作系统不能保证发送间隔的准确性。 可用计时器的数目是有限的。请始终在不再需要计时器时关掉它。 |
发送到 | 可以发送给类属窗口或滚动窗口 |
说明 | 停止使用 $timerId 启动的计时器 |
事件参数 | 该事件参数包含计时器标识(整数) |
发送到 | 可以发送给类属窗口或滚动窗口 |
说明 | 模拟向窗口发送计时器消息 |
事件参数 | 该事件参数包含计时器标识(整数) |
发送到 | 用户定义的任意窗口或对话框。 |
说明 | 这是一个用户定义的消息常量。 |
事件参数 | 使用用户定义消息可以传送任一参数。如果可以在
SendMessage 语句中对附加的参数赋值,则可以在事件函数对它们赋值。 接收窗口必须知道,对该消息来说,哪些参数是有效的。 |
注 | 所有用户定义消息必须具有 $MsgUser+n 值,其中,n 是选择用来赋值给新消息常量的任一数值。 |
可以使用 PostMessage 语句来将下列消息发送给窗口句柄。
投递到 | 可以投递给具有菜单条的任一窗口。 |
说明 | 对用户对菜单项(该菜单项的标识是 menuSelection 语句中指定的)的选择进行模拟。 |
事件参数 | menuSelection(整数)。 |
注 | 其他信息,请参见 WinSetMenuBar。 |
投递到 | 可以投递给任一窗口 |
说明 | 将窗口框架的左上角移动到指定的位置 |
事件参数 | 有两个事件参数:
|
投递到 | 可以投递给任一窗口 |
说明 | 请求窗口重新自行绘制 |
投递到 | 可以投递给具有状态条的任一窗口 |
说明 | 请求目标窗口重新绘制自己的状态条 |
投递到 | 可以将用户定义的消息发送给具有事件函数的任意窗口。 |
说明 | 所有用户定义的消息必须具有一个 $MsgUser 值或更大的值。 |
事件参数 | 使用用户定义消息可以传送任一事件参数。接收窗口必须知道,对该消息来说,哪些参数是有效的。所有参数都采用值传递。 |
DDE 应用程序的所有拨出通信都应当经过相应的 TSD 脚本语句的处理。请参见下列语句:
提示:每次接收到 DDE 消息,都应当返回 $MsgDDEAcknowledge 消息。返回 $MsgDDEAcknowledge 失败可能会导致内存丢失。
提示:如果想在接收到 $MsgDDExxx 时发送肯定应答,只需 EXIT($DDEAck)即可。如果想发送否定应答,只需 EXIT(0)即可。
Tivoli 服务台 6.0 开发工具包脚本语言参考