IDispEventImpl选件类
此选件类提供 IDispatch 方法的实现。
重要事项 |
---|
此选件类及其成员不能在 Windows 运行时执行的应用程序。 |
template <
UINT nID,
class T,
const IID* pdiid= &IID_NULL,
const GUID* plibid= &GUID_NULL,
WORD wMajor= 0,
WORD wMinor= 0,
class tihclass= CcomTypeInfoHolder
>
class ATL_NO_VTABLE IDispEventImpl :
public IDispEventSimpleImpl<nID, T, pdiid>
参数
nID
源对象的唯一标识符。当 IDispEventImpl 是复合控件时基类,提供此参数将所需包含控件的资源ID。在某些情况下,使用一个随机的正整数。T
用户的选件类,从 IDispEventImpl派生。pdiid
此选件类实现事件的调度接口的IID的指针。在类型 plibid、 wMajor和 wMinor表示的库必须定义此接口。plibid
用于定义调度接口的类型库的指针指向由 pdiid。如果 &GUID_NULL,类型库从对象源添加将加载事件。wMajor
类型库的主版本。默认值为 0。wMinor
类型库的次版本。默认值为 0。tihclass
用于的选件类管理 T的类型信息。默认值为类型 CComTypeInfoHolder选件类;但是,除 CComTypeInfoHolder外,还可以通过提供类型的选件类重写此模板参数。
成员
公共 Typedefs
名称 |
说明 |
---|---|
用于的选件类管理类型信息。默认为 CComTypeInfoHolder。 |
公共构造函数
名称 |
说明 |
---|---|
构造函数。 |
公共方法
名称 |
说明 |
---|---|
设置指定的调度标识符的功能索引。 |
|
映射一个成员和可选设置参数名称与相应设置整数Dispid。 |
|
检索对象的类型信息。 |
|
检索类型信息接口的数字。 |
|
检索一个用户定义的类型的基本类型。 |
备注
IDispEventImpl 提供实现事件调度接口方法,无需提供每个方法/事件的代码实现该接口。IDispEventImpl 提供 IDispatch 方法的实现。只需提供事件的实现您对处理感兴趣。
IDispEventImpl 与您的选件类的 事件接收器映射 一起使用路由事件到适当的处理程序函数。使用此选件类:
添加一 SINK_ENTRY 或 SINK_ENTRY_EX 宏到每个事件接收器映射在要处理的每个对象。当使用 IDispEventImpl 为复合控件的基类时,可以在事件接收器映射可以调用 AtlAdviseSinkMap 生成并中断与事件源的连接所有项。在某些情况下,或者更大的控件,需要 DispEventAdvise 生成源对象和基类之间的连接。调用 DispEventUnadvise 中断连接。
必须从 IDispEventImpl 派生(使用 nID的单个值)需要处理事件的每个对象的。可以通过unadvising重新使用基类源对象并建议不同的源对象,但是,的源对象的最大数可由单个对象处理一次由 IDispEventImpl 基类的数目。
IDispEventImpl 提供功能和 IDispEventSimpleImpl相同,不同之处在于,它从类型库获取有关接口的类型信息(而不是它的形式提供指向 _ATL_FUNC_INFO 结构。当您没有类型描述事件接口的库也不要避免开销与使用类型库时,请使用 IDispEventSimpleImpl。
说明 |
---|
IDispEventImpl 和 IDispEventSimpleImpl 提供自己 IUnknown::QueryInterface 的实现使每个 IDispEventImpl 和 IDispEventSimpleImpl 基类为单独的标识,同时仍允许直接访问类您的主程序COM对象时成员。 |
CE ActiveX事件接收器的ATL实现仅支持返回类型HRESULT或无效的值从您的事件处理程序方法的;任何其他返回值不受支持,并且其行为不确定。
有关更多信息,请参见 支持IDispEventImpl。
继承层次结构
_IDispEvent
_IDispEventLocator
IDispEventImpl
要求
Header: atlcom.h