65.9K
CodeProject 正在变化。 阅读更多。
Home

创建 Visio 插件 VSL 项目,包含工具栏、菜单和命令处理程序

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.54/5 (6投票s)

2008年2月29日

CPOL

2分钟阅读

viewsIcon

44988

downloadIcon

441

关于 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 应用程序中看到自定义工具栏和菜单,如我在图片中所述。如果您单击菜单或工具栏项,它将显示一个包含项目名称的消息框。

© . All rights reserved.