atlcom2.h

来自「wince6.0平台上的任务管理器,功能类似于windows的任务管理器. 」· C头文件 代码 · 共 33 行

H
33
字号

#pragma once

#include <atlcom.h>

// CComEnum2<> extends ATL CComEnum<> that the Next() method initializes its T parameter
template <class Base, const IID* piid, class T, class Copy, class ThreadModel = CComObjectThreadModel>
class CComEnum2 : 
    public CComEnum<Base, piid, T, Copy, ThreadModel>
{
public:
	STDMETHOD(Next)(ULONG celt, T* rgelt, ULONG* pceltFetched)
    {
        *rgelt = T();
        return CComEnum::Next(celt, rgelt, pceltFetched);
    }
};

// CComEnum2<> template class specialization where T = VARIANT
// This will overcome a bug in CF3.5 that will check erroneously VARIANT vt type
// when the last item of an IEnumVariant is checked for validity. CComEnum<> returns than S_FALSE
template <class Base, const IID* piid, class Copy, class ThreadModel/* = CComObjectThreadModel*/>
class CComEnum2<Base, piid, VARIANT, Copy, ThreadModel> : 
    public CComEnum<Base, piid, VARIANT, Copy, ThreadModel>
{
public:
	STDMETHOD(Next)(ULONG celt, VARIANT* rgelt, ULONG* pceltFetched)
    {
        VariantInit(rgelt);
        return CComEnum::Next(celt, rgelt, pceltFetched);
    }
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?