在word里做一个插件:需要在word里菜单里加入一个自定义的主菜单(如在菜单"格式"和"工具"之间添加一个"我的word"菜单),然后在自菜单里再添加一些子菜单.
我的Addin代码如下,但就是菜单不出来.
急呀!!!!!!!!!!!!!!!!!!!!!!!!!!!
STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)
{
CComQIPtr<_Application> spApp(Application);

ATLASSERT(spApp); m_spApp = spApp; HRESULT Hr = AppEvents::DispEventAdvise(m_spApp);
if (FAILED(Hr)) return Hr; CComPtr < Office::_CommandBars> spCmdBars; 
CComPtr < Office::CommandBar> spCmdBar;
CComPtr < Office::CommandBarControls> spCmdCtrls;
CComPtr < Office::CommandBarControls> spNewCmdCtrls; Hr = m_spApp->get_CommandBars(&spCmdBars);
if (FAILED(Hr)) return Hr;
ATLASSERT(spCmdBars);
CComVariant vName("NewMenu");
CComVariant vPos(9);
CComVariant vTemp(VARIANT_FALSE);
CComVariant vType(msoControlPopup);
CComVariant vMenuEmpty(DISP_E_PARAMNOTFOUND, VT_ERROR); // Get CommandBar that is Word's Main Menu
Hr = spCmdBars->get_ActiveMenuBar(&spCmdBar);
if (FAILED(Hr)) return Hr;
spCmdCtrls = spCmdBar->GetControls();
ATLASSERT(spCmdCtrls);
IDispatchPtr spDip;
spDip = spCmdCtrls->Add(vType,vMenuEmpty,vName,vPos,vTemp);
CComQIPtr < Office::CommandBarPopup> spCmdCtrl(spDip);// spCmdCtrl->put_Caption("");
// spCmdCtrl->put_Enabled(VARIANT_TRUE);
// spCmdCtrl->put_Visible(VARIANT_TRUE); spNewCmdCtrls = spCmdCtrl->GetControls();
CComPtr < Office::CommandBarControl> spNewMenu; CComVariant vMenuType(1); // type of control - menu
CComVariant vMenuPos(1);  
// CComVariant vMenuShow(VARIANT_TRUE); // menu should be visible
CComVariant vMenuTemp(VARIANT_TRUE); // menu is temporary spNewMenu = spNewCmdCtrls->Add(vMenuType,vMenuEmpty,vMenuEmpty,vMenuPos,vMenuTemp);
_bstr_t bstrName(OLESTR("One"));
spNewMenu->put_Caption(bstrName);
spNewMenu->put_Enabled(VARIANT_TRUE);
spNewMenu->put_Visible(VARIANT_TRUE);
return E_NOTIMPL;
}

解决方案 »

  1.   

    http://topic.csdn.net/t/20030224/14/1460119.html
      

  2.   

    我已经把主菜单和子菜单都给加载进来了,但现在不知道如何给添加的几个子菜单添加单击事件.
    另外一个问题就是不知道为什么我每次打开Word都加载一个菜单(重复加载)
    最好给一个例子(有多个子菜单和子菜单事件的例子)
    急呀!!!!!!!!!!!!!
    谢谢!!!!!!!!!
      

  3.   

    如何在关闭时删除多余的菜单???????
    另外问一下,有没有人做过一个组件可以在Excel和Word里添加菜单?
      

  4.   

    http://www.cppblog.com/azhisoft/
    有范例工程,不过是EXCEL的,把工具条改成菜单条就可以了
      

  5.   

    谢谢各位的关注,不过我现在已经把菜单条给做出来了,但每次打开Word都加载一个菜单(重复加载同一个),现在就只有这个问题没搞定了.
    急死偶也!