当 Active Document 的宿主应用程序通知 Active Document 要执行的命令时发生。
语法
PROCEDURE Object.CommandTargetExec
[LPARAMETERS n命令ID, nExecOption, eArgIn, eArgOut]
参数
nCommandID
是 Active Document 的宿主应用程序向 commandtargetexec 事件传递的一个参数,该参数指出了要执行的命令。下表列出了向 Visual FoxPro 可处理事件传递的值,以及要执行的相应命令。
nCommandID | FOXPRO.H 常数 | 命令 |
1 | CMDID_OPEN | “文件”菜单的“打开”命令。 |
2 | CMDID_NEW | “文件”菜单的“新建”命令。 |
3 | CMDID_SAVE | “文件”菜单的“保存”命令。 |
4 | CMDID_SAVEAS | “文件”菜单的“另存为”命令。 |
5 | CMDID_SAVECOPYAS | “文件”菜单的“将复本保存为”命令。 |
6 | CMDID_PRINT | “文件”菜单的“打印”命令。 |
7 | CMDID_PRINTPREVIEW | “文件”菜单的“打印预览”命令。 |
8 | CMDID_PAGESETUP | “文件”菜单的“页面设置”命令。 |
9 | CMDID_SPELL | “工具”菜单的“拼写检查”命令。 |
10 | CMDID_PROPERTIES | “文件”菜单的“属性”命令。 |
11 | CMDID_CUT | “编辑”菜单的“剪切”命令。 |
12 | CMDID_COPY | “编辑”菜单的“复制”命令。 |
13 | CMDID_PASTE | “编辑”菜单的“粘贴”命令。 |
14 | CMDID_PASTESPECIAL | “编辑”菜单的“选择性粘贴”命令。 |
15 | CMDID_UNDO | “编辑”菜单的“取消”命令。 |
16 | CMDID_REDO | “编辑”菜单的“重复”命令。 |
17 | CMDID_SELECTALL | “编辑”菜单的“全选”命令。 |
18 | CMDID_CLEARSELECTION | “编辑”菜单的“清除”命令。 |
19 | CMDID_ZOOM | “视图”菜单的“显示比例”命令。 |
20 | CMDID_GETZOOMRANGE | 获取“视图”菜单的“显示比例”命令适用的缩放范围。 |
21 | CMDID_UPDATECOMMANDS | 通知 ActiveDocument 状态的改变。 |
22 | CMDID_REFRESH | 请求 ActiveDocument 刷新它的显示。由 ActiveDocument 完成。 |
23 | CMDID_STOP | 请求 ActiveDocument 停止它的处理。 |
24 | CMDID_HIDETOOLBARS | 请求 ActiveDocument 隐藏工具栏。由 ActiveDocument 完成。 |
25 | CMDID_SETPROGRESSMAX | 设置进程指示器的最大值。 |
26 | CMDID_SETPROGRESSPOS | 设置进程指示器的当前值。 |
27 | CMDID_PROGRESSTEXT | 设置进程指示器中包含的文本。 |
28 | CMDID_SETTITLE | 设置标题栏文本。 |
29 | CMDID_DOWNLOADSTATE | 当宿主程序下载状态更改时发送。 |
30 | CMDID_STOPDOWNLOAD | 当执行时停止下载。 |
31 | CMDID_ONTOOLBARACTIVATED | 容器的一个工具栏获得了焦点。 |
36 | CMDID_ENABLE_INTERACTION | 由 Active Document宿主应用程序发送,告诉 ActiveDocument 或者暂停或者重新开始 ActiveDocument 中的任何多媒体(音频或动画)。如果在 ActiveDocument 一个控件中运行的多媒体文件应该重新开始,则 eArgIn 返回“真”(.T.),如果该多媒体文件应该暂停,则 eArgIn 返回“假”(.T.)。Internet Explorer 4.0使用这个命令,当一个 Active Document最小化或完全被另一个窗口覆盖时通知该Active Document,这样该 ActiveDocument 可以暂停播放多媒体信息。 |
37 | CMDID_ONUNLOAD | 当定位到另一个站点之前,或 ActiveDocument 宿主关闭之前由该宿主程序发送。将 eArgOut设置为“假” (.T.)可以防止一个 ActiveDocument 被它的宿主程序关闭。将eArgOut 设置为“真” (.T.),可以允许一个 ActiveDocument 由它的宿主程序关闭。 |
传递给 CommandTargetExec 事件的应该参数,表明指定命令所需的默认动作。
下表列出了 nExecOption 的值,以及要执行的动作。
nExecOption | FOXPRO.H 常量 | 动作 |
0 | CMDEXECOPT_DODEFAULT | 使用默认的行为,提示或不提示用户输入。 |
1 | CMDEXECOPT_PROMPTUSER | 当获得用户输入之后执行命令。 |
2 | CMDEXECOPT_DONTPROMPTUSER | 执行命令而不提示用户。例如,单击“打印”工具栏按钮,会立即打印一篇文档,而不需用户的输入。 |
3 | CMDEXECOPT_SHOWHELP | 显示相应命令的帮助信息,而实际不执行该命令。 |
从 Active Document 宿主程序传递到 commandtargetexec 事件的参数。通常,这个参数是 null 值,当 nCommandID 是 36 时例外。当 nCommandID是 36 时,eArgIn 包含一个值。有关传递给 eArgIn 的逻辑值的详细内容,请参阅 nCommandID 参数说明中的表格。
eArgOut
从 commandtargetexec 事件返回给 Active Document 宿主程序的一个输出参数。通常,这个参数是 null 值,当 nCommandID 是 37 时例外。当nCommandID 是 37 时(表明 Active Document 宿主程序将要关闭 ActiveDocument 或定位到另一个站点),可以将 eArgOut 设置为“假” (.T.),以防止 Active Document 被宿主程序关闭。将 eArgOut 设置为“真” (.T.),可以允许 Active Document 被宿主程序关闭。
说明
commandtargetexec 事件允许 Active Document 根据宿主程序发送的命令执行自定义动作。这些命令可能是由于响应用户选择一个菜单项或工具栏项而发送的,或者是由于触发了 Active Document 宿主程序中的一个事件而发送的。从 CommandTargetExec事件的返回值会通知 Active Document 宿主程序您是否处理过该命令。如果您没有处理过该命令,Active Document 宿主程序会执行该命令默认的过程。
下表列出了从 commandtargetexec 事件返回的值。
返回值 | FOXPRO.H 常量 | 命令动作 |
0 | CMD_OK |
Active Document 处理了该命令。当 Active Document 曾经处理了由nCommandID 指定的命令时返回该值。例如,如果选择了宿主程序中“文件”菜单中的“打开”命令,则您的 Active Document 可以在commandtargetexec 事件中确定nCommandID 为 1,然后执行自己的打开文件例程,可能是使用 Visual FoxPro GETFILE( )函数。 |
2 | CMD_NOTSUPPORTED | Active Document 不支持该命令。Active Document 不支持该命令。当Active Document 不能识别nCommandID 指定的命令时,返回这个值。 |
3 | CMD_DISABLED | Active Document 废止了该命令。当 nCommandID 指定的命令正被废止时,或 Active Document 不能执行该命令时,返回这个值。 |
4 | CMD_NOHELP | Active Document 没有该命令的帮助信息。当 Active Document 没有 nCommandID指定的命令的帮助信息时,返回这个值。 |
5 | CMD_CANCELED | 用户取消了该命令的执行。当 Active Document 试图处理nCommandID 指定的命令而用户取消了该操作时,返回这个值。 |
对于 CommandTargetExec 和 CommandTargetQuery 事件,Visual FoxPro 利用IoleCommandTarget 接口。有关这些事件是如何实施的详细信息,可以在 MSDNlibrary 中搜索 IoleCommandTarget。