3,248
社区成员




#include <olectl.h>
#include <idispids.h>
[ uuid(35AEE76F-5CD3-4404-9FAB-C561D6A7990D), version(1.0),
control ]
library activeXtestLib
{
importlib(STDOLE_TLB);
// CactiveXtestCtrl 的主调度接口
[
uuid(28E74985-74AD-4F11-91C2-72BE1ADB99A8)
]
dispinterface _DactiveXtest
{
properties:
methods:
[id(DISPID_ABOUTBOX)] void AboutBox();
[id(1)] BSTR Test01(void);
};
// CactiveXtestCtrl 的事件调度接口
[
uuid(A044456C-B9FE-4FD2-827D-2BFB6A88BF12)
]
dispinterface _DactiveXtestEvents
{
properties:
// 事件接口没有任何属性
methods:
[id(1)] BSTR Test02(void);
};
// CactiveXtestCtrl 的类信息
[
uuid(B795F2A0-E31F-461D-833A-1E88130E2939)
]
coclass activeXtest
{
[default] dispinterface _DactiveXtest;
[default, source] dispinterface _DactiveXtestEvents;
};
};
BSTR CactiveXtestCtrl::Test01(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString strResult;
// TODO: 在此添加调度处理程序代码
strResult = L"test01";
return strResult.AllocSysString();
}
#include <olectl.h>
#include <idispids.h>
[ uuid(35AEE76F-5CD3-4404-9FAB-C561D6A7990D), version(1.0),
control ]
library activeXtestLib
{
importlib(STDOLE_TLB);
// CactiveXtestCtrl 的主调度接口
[
uuid(28E74985-74AD-4F11-91C2-72BE1ADB99A8)
]
dispinterface _DactiveXtest
{
properties:
methods:
[id(DISPID_ABOUTBOX)] void AboutBox();
[id(1)] BSTR Test01(void);
};
// CactiveXtestCtrl 的事件调度接口
[
uuid(A044456C-B9FE-4FD2-827D-2BFB6A88BF12)
]
dispinterface _DactiveXtestEvents
{
properties:
// 事件接口没有任何属性
methods:
[id(1)] BSTR Test02(void);
};
// CactiveXtestCtrl 的类信息
[
uuid(B795F2A0-E31F-461D-833A-1E88130E2939)
]
coclass activeXtest
{
[default] dispinterface _DactiveXtest;
[default, source] dispinterface _DactiveXtestEvents;
};
};
activeXtestCtrl.cpp中代码
BSTR CactiveXtestCtrl::Test01(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString strResult;
// TODO: 在此添加调度处理程序代码
strResult = L"test01";
return strResult.AllocSysString();
}
有看到过要用IDispatch接口,由于进入不了.h问题,不清楚 dispinterface 类型是不是他们所说得IDispatch类型。
这个问题,到idl文件里面看看接口的定义