WEB开发网
开发学院软件开发VC 用VC6.0编写Word插件(Office2K、XP、03) 阅读

用VC6.0编写Word插件(Office2K、XP、03)

 2010-07-15 20:45:04 来源:WEB开发网   
核心提示:但是点击时没有响应,最后就让我们来解决这个问题,用VC6.0编写Word插件(Office2K、XP、03)(5),1. 在COutlookAddin继承类中加入IDispEventSimpleImpl继承,代码如下:class ATL_NO_VTABLE COutlookAddin :public CComObjec

但是点击时没有响应,最后就让我们来解决这个问题。

1. 在COutlookAddin继承类中加入IDispEventSimpleImpl继承,代码如下:

class ATL_NO_VTABLE COutlookAddin :
public CComObjectRootEx<CComSingleThreadModel>,
……
public IDispEventSimpleImpl<1,COutlookAddin,&__uuidof(Office::_CommandBarButtonEvents)>

2. 声明_ATL_SINK_INFO结构回调参数信息。在OutlookAddin.h文件中加入下面语句:

// 按钮事件响应信息声明
extern _ATL_FUNC_INFO OnClickButtonInfo;

在OutlookAddin.cpp文件中加入定义语句,如下:

// 按钮事件响应信息定义
_ATL_FUNC_INFO OnClickButtonInfo ={CC_STDCALL,VT_EMPTY,2,{VT_DISPATCH,VT_BYREF
| VT_BOOL}};

3. 加入Sink映射,如下:

EGIN_SINK_MAP(COutlookAddin)
SINK_ENTRY_INFO(1, __uuidof(Office::_CommandBarButtonEvents),/*dispid*/
0x01, OnClickButton1, &OnClickButtonInfo)
SINK_ENTRY_INFO(2, __uuidof(Office::_CommandBarButtonEvents),/*dispid*/
0x01, OnClickButton2, &OnClickButtonInfo)
SINK_ENTRY_INFO(3, __uuidof(Office::_CommandBarButtonEvents),/*dispid*/
0x01, OnClickMenu, &OnClickButtonInfo)
END_SINK_MAP()

4. 加入事件函数。在OutlookAddin.h中加入声明:

void __stdcall OnClickButton1(IDispatch * /*Office::_CommandBarButton**/
Ctrl,VARIANT_BOOL * CancelDefault);

在OutlookAddin.cpp中加入实现:

// 工具条按钮1点击事件响应函数
void __stdcall CWordAddin::OnClickButton1(IDispatch *
/*Office::_CommandBarButton**/ Ctrl,VARIANT_BOOL * CancelDefault)
{
MessageBox(NULL, "hello", "world", MB_OK);
}

5. 最后,打开或断开与接口的连接。方法如下

在OnConnection接口函数的最后部分,加入下面代码来打开连接:

在OnConnection接口函数的最后部分,加入下面代码来打开连接:

CommandButton1Events::DispEventAdvise((IDispatch*)m_spButton);

在OnDisconnection接口函数中,加入下面代码来断开连接:

CommandButton1Events::DispEventUnadvise((IDispatch*)m_spButton);

综上所述,编写一个简单的office的插件,其实并不难,只要按照步骤一步一步进行,肯定能成功,如果大家在使用过程中有什么疑问,欢迎一起探讨。

本文配套源码

上一页  1 2 3 4 5 

Tags:VC 编写 Word

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接