使用VC++ ATL实现Office的COM插件[9]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 useresu 的 blog

    spcmdbutton2->putvisible(variant_true);

    spcmdbutton2->put_onaction(olestr("macro2"));

 

添加菜单项的过程与之相类似:

首先通过调用commandbars集合的get_activemenubar()方法得到一个commandbar对象,这个对象代表当前的工程中的活动菜单,然后调用commandbar的getcontrols得到当前菜单的控件集合。尝试在word的“格式”菜单(第5个菜单)中加入新的菜单项,调用commandbarcontrols的getitem(5)得到需要的“格式”菜单项,它也是一个commandbarcontrols集合,(前面曾经提到,控件集是可以嵌套的),这样就可以通过调用它的add方法添加新的菜单项了。具体的实现代码如下:

    _bstr_t bstrnewmenutext(olestr("new menu item"));

    ccomptr < office::commandbarcontrols> spcmdctrls;

    ccomptr < office::commandbarcontrols> spcmdbarctrls;

    ccomptr < office::commandbarpopup> spcmdpopup;

    ccomptr < office::commandbarcontrol> spcmdctrl;

 

    // get commandbar that is word's main menu

    hr = spcmdbars->get_activemenubar(&spcmdbar);

    if (failed(hr))

        return hr;

    // get menu as commandbarcontrols

    spcmdctrls = spcmdbar->getcontrols();

    atlassert(spcmdctrls);

 

    // we want to add a menu entry to outlook's 6th(tools) menu     //item

    ccomvariant vitem(5);

本文关键:使用VC++ ATL实现Office的COM插件
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top