ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**Msg** 对象表示一个 [脚本对话框](/Manual/scripting/script_dialogs/README.zh.md) 输入事件消息。它由 **[Dialog](dialog.zh.md).GetMsg** 方法返回,该方法在您为 [独立对话框](/Manual/scripting/script_dialogs/the_dialog_message_loop/detached_dialogs.zh.md) 运行消息循环时调用。 <table> <thead><tr><th> 属性名称</th><th> 返回类型</th><th> 说明 </th></tr></thead><tbody><tr><td> *\<默认值\>*</td><td> *bool*</td><td> 如果消息有效,则返回 **True**,如果对话框已关闭,则返回 **False**(这意味着您应退出消息循环)。 </td></tr><tr><td> buttons</td><td> *string*</td><td> 返回一个字符串,表示生成消息时按下了哪个鼠标按钮。可能的值为 **left**、**right** 和 **middle**。 </td></tr><tr><td> checked</td><td> *int*</td><td> 如果事件类型为 **checked**,则表示该项目的选中状态。如果在自动模式下使用复选框,这将是该项目的新选中状态。在手动模式下,这将表示 **现有** 状态,并且由您决定是否更改状态。 选中状态为: | | | |-------|------------------------| | **0** | 未选中 | | **1** | 选中 | | **2** | 不确定 | | **3** | 未选中/禁用 | | **4** | 选中/禁用 | | **5** | 不确定/禁用 | </td></tr><tr><td> control</td><td> *string*</td><td> 返回事件中涉及的控件的名称。您可以通过将此字符串传递给 **[Dialog](dialog.zh.md).Control** 方法来获取表示该控件的 **[Control](control.zh.md)** 对象。 - 对于 **timer** 事件,这将返回触发的计时器的名称。 - 对于 **hotkey** 事件,这将返回热键的名称。 - 对于 **drop** 事件,这将返回文件被拖放到其上的控件的名称。 - 对于 **tab** 事件,这会告诉您事件发生在哪个受监控的标签页中(您在 **[Dialog](dialog.zh.md).WatchTab** 方法中分配的 ID,或者如果您未分配 ID,则为标签页的数字句柄)。 - 对于 **dirchange** 事件,这将告诉您哪个观察器检测到文件或文件夹更改(您通过 **[Dialog](dialog.zh.md).WatchDir** 方法分配的 ID)。 - 如果您已通过 **[Dialog](dialog.zh.md).NotifyIcon** 方法向任务栏添加了图标,则 **notifyicon** 表示与该图标关联的事件。 </td></tr><tr><td> cx</td><td> *int*</td><td> 对于 **resize** 事件,该属性返回对话框的新宽度。 </td></tr><tr><td> cy</td><td> *int*</td><td> 对于 **resize** 事件,该属性返回对话框的新高度。 </td></tr><tr><td> data</td><td> *int* 或// bool//</td><td> 如果事件类型为 **focus**,则表示控件的新焦点状态 - 如果控件获得了焦点,则为 **True**;如果失去了焦点,则为 **False**。 对于 *组合框* 或 *列表框* 控件:如果事件类型为 **selchange** 或 **dblclk**,则返回与选定项目关联的数据值。 对于 *复选框* 控件或 *单选按钮*:如果事件类型为 **click**,则返回一个 *bool*,表示当前选中状态。 对于三态 *复选框*:如果事件类型为 **click**,则返回一个 *int*,表示当前状态。 如果事件类型为 **timer**,则此值表示自上次触发此计时器以来经过的毫秒数。 如果事件类型为 **tab**,并且 **value** 属性设置为 **filechange**,则这表示在受监控的标签页中发生了哪些文件更改事件。 **1** = 添加,**2** = 删除,**4** = 更改。这些值将被相加(例如 **6** 表示至少有一项被更改并且至少有一项被删除)。 </td></tr><tr><td> dialog</td><td> *string*</td><td> 返回父对话框的名称。 </td></tr><tr><td> event</td><td> *string*</td><td> 返回一个字符串,表示发生的事件。当前定义的事件为: | | | |----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **invalid** | 对话框已关闭 | | **checked** | 对于启用了 ***Checkboxes*** 属性的列表视图控件,表示已单击了列表项的复选框。 | | **click** | 单击了该控件(例如按钮、复选框、单选按钮、启用 ***Notify Clicks*** 属性的标记文本或静态控件)。 | | **close** | 用户单击了对话框的关闭按钮。仅在将 **[Dialog](dialog.zh.md).want_close** 属性设置为 **True** 时才生成。您需要使用 **[Dialog](dialog.zh.md).EndDlg** 方法手动关闭对话框。 | | **dblclk** | 双击了列表中的项目(列表框、组合框或列表视图)或双击了控件(启用 ***Notify Clicks** 的静态控件)。 | | **dirchange** | 通过 **[Dialog](dialog.zh.md).WatchChanges** 方法建立了对其进行监视的文件或文件夹已发生更改。 **control** 属性告诉您触发哪个观察器。 | | **drag** | 用户已从静态控件或列表视图控件启动拖放。您可以通过调用 **[Dialog](dialog.zh.md).Drag** 方法来响应。必须在控件上启用 ***Drag Source*** 属性才能生成此事件。 | | **拖放** | 文件已拖放到你的对话框上。对话框模板必须将它的 ***接受拖放*** 属性设置为 **True**,才能启用拖放支持。 | | **编辑变更** | 编辑字段的内容已修改。对于列表视图,这个事件表示列表项的标记已编辑。 | | **获取焦点** | 控件获得或失去焦点。 | | **热键** | 已按下一个按键组合,其使用 **[对话框](dialog.zh.md).AddHotkey** 方法添加为热键。 | | **调整大小** | 对话框已被用户调整大小。仅当 **[对话框](dialog.zh.md).want_resize** 属性已设置为 **True** 时才会生成。不要将手动调整大小和自动调整大小与同一个控件混合:如果你在响应此事件时移动或调整控件大小,则该控件不应在对话框编辑器中设置任何 **调整大小** 标志。 | | **右键单击** | 列表中的某一项已右键单击(列表框,列表视图),或已右键单击控件(启用了 ***通知单击*** 属性的静态控件)。 | | **选择更改** | 选择项已更改(列表框,组合框,列表视图或标签页)。 | | **计时器** | 已过使用 **[对话框](dialog.zh.md).SetTimer** 方法创建的周期性计时器。 | | **标签页** | 在使用 **[对话框](dialog.zh.md).WatchTab** 方法监控的标签页中已发生事件。 | </td></tr><tr><td> focus</td><td> *bool*</td><td> 如果控件在生成消息时有焦点,则返回 **True**。 </td></tr><tr><td> index</td><td> *int*</td><td> 返回 *组合框*、*列表框* 或 *标签页控件* 的当前选择索引。 </td></tr><tr><td> mousex</td><td> *int*</td><td> 返回消息生成时鼠标光标的水平位置。 </td></tr><tr><td> mousey</td><td> *int*</td><td> 返回消息生成时鼠标光标的垂直位置。 </td></tr><tr><td> object</td><td> 对于 **拖放** 事件,此属性返回 **[Vector](vector.zh.md)** **[Item](item.zh.md)** 对象,代表拖放到你的对话框上的文件。 </td></tr><tr><td> qualifiers</td><td> *string*</td><td> 返回指示在生成消息时按下的限定键(如果有的)的字符串。 该字符串可能包含以下任意或全部内容:*shift、ctrl、alt、lwin、rwin* 如果没有按任何限定键,则字符串为:*none* </td></tr><tr><td> result</td><td> *bool*</td><td> 如果消息有效,则返回 **True**;如果对话框已关闭,则返回 **False**。 </td></tr><tr><td> tab</td><td> *string*</td><td> 对于对话框标签页控件,如果控件位于标签页控件内部的对话框中,则返回父标签页的名称。 如果事件类型为 **tab**,则返回一个 **[Tab](tab.zh.md)** 对象,该对象代表发生事件的受监控标签页。反复调用此操作可能会导致效率低下。 </td></tr><tr><td> value</td><td> *string*</td><td> 对于 **dblclk**、**editchange**和 **selchange** 事件,返回编辑字段(或选定项标签)的当前内容。 对于 **tab** 事件,指示在受监控标签页中发生的事件。可能的值包括 **select**、**navigate**、**filechange**、**activate**、**srcdst**、**view**、**flat** 和 **close**(在你监控时如果标签页已关闭,则会发送)。 对于 **drag** 事件,这表示用于拖动的按钮(**left** 或 **right**)。 对于来自标记文本控件的 **click** 事件,这表示已单击的链接的 ID。 </td></tr></tbody>