用户定义的工具

MFC 支持用户定义的工具。 一个用户定义的工具是执行外部,用户指定的程序的特定命令。 可以使用自定义过程管理用户定义的工具。 但是,因此,如果您的应用程序对象从 CWinAppEx 类,未派生不能使用此方法。 有关自定义项的更多信息,请参见 MFC的自定义项

如果启用了用户定义的工具支持,自定义对话框自动包括 工具 选项。 下图显示 工具 页。

自定义对话框工具选项

自定义对话框中的“工具”选项卡

启用用户定义的工具支持

若要启用应用程序的用户定义的工具,请调用 CWinAppEx::EnableUserTools。 但是,您必须先定义在应用程序的资源文件的多个常数使用作为参数传递给此调用。

在资源编辑器创建使用适当的命令 ID. 的一个虚拟的命令 在下面的示例中,我们使用 ID_TOOLS_ENTRY为命令 ID. 此命令 ID 指示该框架将插入用户定义的工具一个或多个菜单的位置。

可以在字符串表中的留出一些连续的 ID 表示用户定义的工具。 您可以暂时保留一字符串的数量与的用户工具的最大数量相等的用户可以定义。 在下面的示例中,这些名为 ID_USER_TOOL1 通过 ID_USER_TOOL10

您可以为用户提供建议帮助他们将被作为工具的外部程序选择内容和参数。 为此,请创建两个弹出菜单在资源编辑器。 在下面的示例中这些名为 IDR_MENU_ARGSIDR_MENU_DIRS。 对于这些菜单的每个命令,请定义一个字符串在应用程序字符串表中。 该字符串的资源 ID 必须与命令 ID.

还可以创建从 CUserTool 类 的派生类替换默认实现。 为此,请将您的派生类的运行时信息作为第四个参数在 CWinAppEx::EnableUserTools,而不是 RUNTIME_CLASS (CUserTool 类)。

在定义相应的常数后,调用 CWinAppEx::EnableUserTools 启用用户定义的工具。

以下方法调用演示如何使用这些常数:

    EnableUserTools(ID_TOOLS_ENTRY, ID_USER_TOOL1, ID_USER_TOOL10, RUNTIME_CLASS(CUserTool), IDR_MENU_ARGS, IDR_MENU_DIRS);

在此示例中,工具选项将包括在 自定义 对话框。 框架将替换匹配任何菜单上的命令 ID ID_TOOLS_ENTRY 以设置当前定义的用户工具的所有命令,每当用户打开该菜单。 命令 ID ID_USER_TOOL1 通过 ID_USER_TOOL10 是保留为用户定义的工具的使用。 类 CUserTool 类 处理调用用户工具。 自定义 对话框的工具选项在参数和内容项字段的右侧的按钮来访问菜单 IDR_MENU_ARGSIDR_MENU_DIRS。,当用户选择一个命令从这些菜单之一时,框架追加到相应的文本框包含资源 ID 等于命令 ID. 的字符串

Cc137832.collapse_all(zh-cn,VS.110).gif包括预定义的工具

如果希望预定义在应用程序启动的一些工具,您必须重写主窗口的 CFrameWnd::LoadFrame 方法以适合您的应用程序。 在该方法,必须执行下列步骤。

添加新工具在 LoadFrame

  1. 获取指向 CUserToolsManager 类 对象是通过调用 CWinAppEx::GetUserToolsManager

  2. 对于要创建的每个工具,请调用 CUserToolsManager::CreateNewTool。 此方法返回指向 CUserTool 类 对象并将新创建的用户工具给工具的内部集合。 如果为 CUserTool 类 派生类提供的运行时信息作为 CWinAppEx::EnableUserTools的第四个参数, CUserToolsManager::CreateNewTool 将实例化并返回该类的实例。

  3. 对于每个工具,通过设置 CUserTool::m_strLabel 设置其文本标签并通过调用 CUserTool::SetCommand将其命令。 CUserTool 类 的默认实现从到 SetCommand的调用中指定的程序自动检索可用的图标。

请参见

参考

CUserTool 类

CUserToolsManager 类

CWinAppEx 类

概念

MFC的自定义项