创建 Visio 插件 VSL 项目,包含工具栏、菜单和命令处理程序
关于 Visio Add-on VSL 项目的聚焦于速度的文章

引言
VSL 插件:VSL(Visio Libraries)最初是在 Visio 2.0 中提供的。事实上,许多开箱即用的 Visio 解决方案,例如组织结构图,都是作为 VSL 插件实现的。您可以使用 C 或 C++ 创建 VSL 插件。此 Visio 解决方案选项的重点是纯粹的速度。请记住,需要安装 Visio SDK 才能使用它。
Using the Code
创建应用程序的步骤
使用 Microsoft Visual 2005 编辑器创建一个新项目。导航到其他语言并选择 Visual C++。这将显示许多选项,其中包含 Visio 插件或附加组件,并选择它。为项目提供一个名称,例如“VisioProject1”。这将弹出 Microsoft Visio 插件或附加组件向导。单击“下一步”按钮,选择“创建一个 Visio VSL 插件,使用 C++ 而不使用 ATL 或 MFC”,单击“下一步”,选择“导入 Visio 类型库”,然后单击“下一步”并完成向导。向导将生成示例代码。运行附加组件时,将显示一个消息框,其中包含“VisioProject1 插件由 Visio 2007 SDK 附加组件/插件向导 VisioProject1 生成”的信息。注释掉 MessageBox 代码,并添加以下源代码以实现自定义的 菜单、工具栏以及**处理菜单项、工具栏项**的功能。构建项目。它将在 Debug 文件夹中生成 VisioProject1.vsl 二进制文件。
//Common
BSTR bstrAddOnName = SysAllocString(L"VisioProject1U");
BSTR bstrTitle = SysAllocString(L"&Sample");
BSTR bstrItem = SysAllocString(L"Item");
//Menu: Visio::IVUIObjectPtr uiObjPtr;
Visio::IVMenuSetsPtr menuSetsPtr;
Visio::IVMenuSetPtr menuSetPtr;
Visio::IVMenusPtr menusPtr;
Visio::IVMenuPtr menuPtr;
Visio::IVMenuItemsPtr menuItemsPtr;
Visio::IVMenuItemPtr menuItemPtr;
hr = m_app->get_BuiltInMenus(&uiObjPtr);
hr = uiObjPtr->get_MenuSets(&menuSetsPtr);
//long itemId = Visio::VisUIObjSets::visUIObjSetDrawing;
hr = menuSetsPtr->get_ItemAtID(2, &menuSetPtr);
hr = menuSetPtr->get_Menus(&menusPtr); //add a new menu
menuPtr = menusPtr->AddAt(7);
hr = menuPtr->put_Caption(bstrTitle);
hr = menuPtr->get_MenuItems(&menuItemsPtr);
//MenuItem1 menuItemPtr = menuItemsPtr->Add();
hr = menuItemPtr->put_Caption(bstrItem);
menuItemPtr->put_AddOnName(bstrAddOnName);
//Add-on name
menuItemPtr->put_ActionText(bstrItem);
menuItemPtr->put_MiniHelp(bstrItem);
menuItemPtr->put_AddOnArgs(bstrItem);
m_app->SetCustomMenus(uiObjPtr); //Add the Menu to the Application
//Toolbar
Visio::IVUIObjectPtr uiToolbarPtr;
Visio::IVToolbarSetPtr toolbarSetPtr;
Visio::IVToolbarPtr toolbarPtr;
Visio::IVToolbarItemsPtr toolbarItemsPtr;
Visio::IVToolbarItemPtr toolbarItemPtr;
// get build in toolbars
hr = m_app->get_BuiltInToolbars(0, &uiToolbarPtr);
hr = uiToolbarPtr->ToolbarSets->get_ItemAtID(2, &toolbarSetPtr); //add a new toolbar
toolbarPtr = toolbarSetPtr->Toolbars->Add();
toolbarPtr->put_Caption(bstrTitle);
//toolbarPtr->put_Position((short)Visio::VisUIBarPosition::visBarMenu);
toolbarPtr->put_Position(6);
hr = toolbarPtr->get_ToolbarItems(&toolbarItemsPtr);
//ToolbarItem1
toolbarItemPtr = toolbarItemsPtr->Add();
toolbarItemPtr->put_Caption(bstrItem);
toolbarItemPtr->put_AddOnName(bstrAddOnName);
//Add-on Name toolbarItemPtr->put_ActionText(bstrItem);
toolbarItemPtr->put_MiniHelp(bstrItem);
toolbarItemPtr->put_AddOnArgs(bstrItem);
toolbarItemPtr->put_CntrlType(2);
//(int)Visio.VisUICtrlTypes.visCtrlTypeBUTTON;
toolbarItemPtr->put_FaceID(270);
m_app->SetCustomToolbars(uiToolbarPtr); //Add the Toolbar to the Application
Command Handling
//Handling the User click commands from Visio - Command Handler
if (pV2L->szCmdLineArgs != NULL){
if (strcmp(pV2L->szCmdLineArgs, "Item") == 0){
MessageBoxA(0, pV2L->szCmdLineArgs, "Info", 0);
}
}
运行
打开 Visio 应用程序。导航到“工具”->“选项”->“高级”,然后选择“文件路径”。在“附加组件路径”中添加 VisioProject1.vsl 的文件路径,然后单击“确定”。关闭并重新打开 Visio 应用程序。导航到“工具”->“附加组件”。在 运行附加组件 弹出窗口中选择 VisioProject1。单击“确定”以运行附加组件。您可以在 Visio 应用程序中看到自定义工具栏和菜单,如我在图片中所述。如果您单击菜单或工具栏项,它将显示一个包含项目名称的消息框。