|
VSTO全称是“Visual Studio Tools for Office”, 它是微软自office2007以后新定义的一跳二次开发规范,可能大多数人都认为开发一个vsto插件只能通过.net来进行,要么是vb.net 要么是c#.net, 然后插件发布的时候需要考虑操作系统有没有带上.net的runtime运行环境,反正一堆麻烦事。
我想说的是开发vsto并不一定只有用.net才能开发,完全查以用native代码还进行,甚至是python, ruby等,vsto的规范其实很明确,就是一个实现了某个接口的com组件,只不是在.net环境下,这个com组件是由vsto的环境自己实现的,office在启动时先加载vsto,然后vsto再去加载你的.net代码。
如果想要用C++开发一个vsto插件应该怎么办呢?按刚刚的流程,只要自己实现一个com组件,然后由office直接加载就行了,这样就不需要.net的环境了。
它只需要实现_IDTExtensibility2接口及IRibbonExtensibility接口就行了,
com组件的示例代码:
class ATL_NO_VTABLE COfficeplugin_ComAddinConnetct :
public ATL::CComObjectRootEx<ATL::CComSingleThreadModel>,
public ATL::CComCoClass<COfficeplugin_ComAddinConnetct, &CLSID_CExcel_ComAddinConnetct>,
public ATL::IDispatchImpl<IExcel_ComAddinConnetct, &IID_IExcel_ComAddinConnetct, &LIBID_excel_comaddinLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public ATL::IDispatchImpl<_IDTExtensibility2, &IID__IDTExtensibility2, &LIBID_excel_comaddinLib, /* wMajor = */ 1>,
public ATL::IDispatchImpl<IRibbonExtensibility>,
public ATL::IDispatchImpl<ICustomTaskPaneConsumer>
大家也可以看看我用C++实际写的一个插件:http://www.uuoffice.net/index.html
|
|