浅谈C/C++ 开发Excel插件之任务窗格

7 篇文章 0 订阅
5 篇文章 0 订阅

 Excel的任务窗格非常友好,开发Excel也避免不了,Choice在其插件实现了弹出对话框和任务窗格供用户选择。

如何在C++中创建任务窗格呢。

1.在CConnect类中添加ICustomTaskPaneConsumer接口,方法同前

修改为public IDispatchImpl<ICustomTaskPaneConsumer, &__uuidof(ICustomTaskPaneConsumer), &__uuidof(__Office), /* wMajor = */ 2, /* wMinor = */ 5>

  Vs会自动添加要实现的接口STDMETHOD(CTPFactoryAvailable)(ICTPFactory * CTPFactoryInst);

2.添加一个ATL控件(项目》添加》类》ATL》ATL控件)

ATL有三种控件类型 简单型 复合型 DHTML类型

简单型:创建一个空白窗体并实现OnDraw函数,开发者可以任意绘制界面

复合型:创建一个类似对话框的界面,开发者可将需要的控件拖拽上去,类似MFC。

DHTML:支持html控件,将开发者编写的html显示出来,支持JS。


选择复合型。

注:在编写类名的界面记得填写 proid, 创建任务窗格需要填写。


3.实现STDMETHOD(CTPFactoryAvailable)(ICTPFactory * CTPFactoryInst);

STDMETHOD(CTPFactoryAvailable)(ICTPFactory * CTPFactoryInst)
{
VARIANTARG v;
v.vt = VT_ERROR;
v.scode = DISP_E_PARAMNOTFOUND;
CTPFactoryInst->CreateCTP(CComBSTR(_T("EdbParamaTaskBarUi")), CComBSTR(_T("历史行情")), v, &m_pHistoryPane);
m_pHistoryPane->put_DockPosition(Office::MsoCTPDockPosition::msoCTPDockPositionLeft);
m_pHistoryPane->put_Width(320);
m_pIRibbonUIPtr->Invalidate();
VARIANT_BOOL isVisible;
m_pHistoryPane->get_Visible(&isVisible);
if (!isVisible)
{
m_pHistoryPane->put_Visible(TRUE);
}

}

EdbParamaTaskBarUi为proid;

    任务窗格就创建好了,以后的任务就是实现功能了。



参考文档:

"http://180.76.151.96/news/index.php/news/news_list_block?


callback=jQuery21109300857859198004_1468832797985&code=GP&start=0&need


Count=40&_=1468832797999" @0x8bc13c8


https://msdn.microsoft.com/zh-cn/aa338202


https://msdn.microsoft.com/zh-cn/aa338202




https://msdn.microsoft.com/zh-cn/aa722523.aspx#a16c7df5-93f3-4920-


baa8-7b7290794c15_AdditionalResources

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值