如何让网页可以支持可连接点COM组件???

rick1126 rick1126 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是源代码部分

class ATL_NO_VTABLE CCalc :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCalc, &CLSID_Calc>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CCalc>,
public IDispatchImpl<ICalc, &IID_ICalc, &LIBID_CALCTESTLib>,
public CProxy_ICalcEvents< CCalc >,
public IProvideClassInfo2Impl< &CLSID_Calc, NULL, &LIBID_CALCTESTLib >
{
public:
CCalc()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_CALC)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CCalc)
COM_INTERFACE_ENTRY(ICalc)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()

BEGIN_CONNECTION_POINT_MAP(CCalc)
CONNECTION_POINT_ENTRY(DIID__ICalcEvents)
END_CONNECTION_POINT_MAP()


.....

HRESULT Fire_OnResult(INT nEle1, INT nEle2)
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[2];
int nConnections = m_vec.GetSize();

for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch != NULL)
{
VariantClear(&varResult);
pvars[1] = nEle1;
pvars[0] = nEle2;
DISPPARAMS disp = { pvars, NULL, 2, 0 };
pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;

}
};


但是变量 "nConnections" 跟踪得到的值是零????!!!!
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
rick1126
ATL 3,248 成员 48,530 内容