|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
记得有本VBA的书籍讲了一下TCP的实现,书名忘了,VBA实现还是相对简单一些。
其核心内容就是:
1、实现TCP接口及相应的COM消息 ---- 可以创建一个空面板
2、创建一个Active窗口控件, ----- 将控件存放在空面板上
1、派生TCP接口
1.1、派生TCP接口
// 任务窗格
public IDispatchImpl<ICustomTaskPaneConsumer, &__uuidof(ICustomTaskPaneConsumer), &__uuidof(Office::__Office), /* wMajor = */ 2, /* wMinor = */ 4>,
1.2、实现COM消息
BEGIN_COM_MAP(CTYXlAddin)
COM_INTERFACE_ENTRY(ITYXlAddin)
//DEL COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY2(IDispatch, ITYXlAddin)
COM_INTERFACE_ENTRY(_IDTExtensibility2)
COM_INTERFACE_ENTRY(ICustomTaskPaneConsumer) // 任务窗格
END_COM_MAP()
1.3 、实现接口消息函数
// 任务窗格
STDMETHODIMP CTYXlAddin::raw_CTPFactoryAvailable (Office::ICTPFactory * CTPFactoryInst)
{
// 创建控件
//*
_CustomTaskPane* pTaskPane = NULL;
HRESULT hr = S_OK;
VARIANTARG vargParentWindow;
vargParentWindow.vt = VT_ERROR;
vargParentWindow.scode = DISP_E_PARAMNOTFOUND;
hr = CTPFactoryInst->CreateCTP(
CComBSTR(L"TYCTPMsg.TPCControl"), //TYCTPMsg.TPCControl 是一个Active 控件
CComBSTR(L"自己任务窗格"), vargParentWindow, &pTaskPane);
if (SUCCEEDED(hr))
{
hr = pTaskPane->put_Visible(TRUE);
}
return hr;
return E_NOTIMPL;
}
2、创建控件 ---TYCTPMsg.TPCControl,
这就相当简单了。不再过多叙述
|
|