一、获取当前打开Word文档的名字和路径
CComPtr <Word::_Document> pDoc;
hr = m_spApp-> get_ActiveDocument(&pDoc);
if (pDoc != NULL)
{
CComBSTR bstrName;
pDoc-> get_FullName(&bstrName);
USES_CONVERSION;
MessageBox(NULL, W2CT(bstrName), _T("当前文档"), MB_OK);
}
上面的代码不能加在OnConnection中,如果要加在OnConnection中,必须先响应_Application的DocumentChange事件,然后才能得到ActiveDocument。
二、取消自己添加的目录菜单
可以用Delete方法,但是在Delete之前必须先unadvise。
假设你的组件是按照下面的继承方式来实现按钮点击响应的:
class ATL_NO_VTABLE CYourCom :
public ...,
public IDispEventSimpleImpl <1, CYourCom, &__uuidof(_CommandBarButtonEvents)>
那么你应该用下面的方式来取消事件通知:
IDispEventSimpleImpl <1, CYourCom, &__uuidof(_CommandBarButtonEvents)> ::DispEventUnadvise(m_spButton);
菜单栏和工具栏的实现类似。
更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn