idispeventsimpleimpl
场景:使用IDispEventSimpleImpl遇到的有关问题
使用IDispEventSimpleImpl遇到的问题
我从IDispEventSimpleImpl派生一个自己的类,.H文件如下:
#pragma once
#define SINK_ID 1
#ifndef DISPID_RERecognition
#define DISPID_RERecognition 0x00000002
#endif
extern _ATL_FUNC_INFO RecognitionInfo;
class ATL_NO_VTABLE CMyRecognitionEvents:
public IDispEventSimpleImpl <SINK_ID,CMyRecognitionEvents, &DIID__IInkRecognitionEvents>
{
public:
CMyRecognitionEvents(void);
~CMyRecognitionEvents(void);
public:
BEGIN_SINK_MAP(CMyRecognitionEvents)
SINK_ENTRY_INFO(SINK_ID,
DIID__IInkRecognitionEvents,
DISPID_RERecognition,
Recognition,
&RecognitionInfo)
END_SINK_MAP()
HRESULT __stdcall Recognition(BSTR bstrRecognizedString,
VARIANT vCustomParam,
InkRecognitionStatus RecognitionStatus);
};
编译出错,错误信息是“ATL::IDispEventSimpleImpl” : 模板参数“pdiid” : “DIID__IInkRecognitionEvents” : 涉及带有内部链接的对象的表达式不能用作非类型参数。
我是照着一个例子程序做的,不知道为什么会出这样的错。刚接触COM不久,很多细节都不是很清楚,望高人指点一二。谢谢。
------解决方案--------------------
我看了哪个MSDN的例子,我就是那样做的啊,不解。
使用IDispEventSimpleImpl遇到的问题
我从IDispEventSimpleImpl派生一个自己的类,.H文件如下:
#pragma once
#define SINK_ID 1
#ifndef DISPID_RERecognition
#define DISPID_RERecognition 0x00000002
#endif
extern _ATL_FUNC_INFO RecognitionInfo;
class ATL_NO_VTABLE CMyRecognitionEvents:
public IDispEventSimpleImpl <SINK_ID,CMyRecognitionEvents, &DIID__IInkRecognitionEvents>
{
public:
CMyRecognitionEvents(void);
~CMyRecognitionEvents(void);
public:
BEGIN_SINK_MAP(CMyRecognitionEvents)
SINK_ENTRY_INFO(SINK_ID,
DIID__IInkRecognitionEvents,
DISPID_RERecognition,
Recognition,
&RecognitionInfo)
END_SINK_MAP()
HRESULT __stdcall Recognition(BSTR bstrRecognizedString,
VARIANT vCustomParam,
InkRecognitionStatus RecognitionStatus);
};
编译出错,错误信息是“ATL::IDispEventSimpleImpl” : 模板参数“pdiid” : “DIID__IInkRecognitionEvents” : 涉及带有内部链接的对象的表达式不能用作非类型参数。
我是照着一个例子程序做的,不知道为什么会出这样的错。刚接触COM不久,很多细节都不是很清楚,望高人指点一二。谢谢。
------解决方案--------------------
我看了哪个MSDN的例子,我就是那样做的啊,不解。