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);