SOL9 2.0 Class: ComObjectSet

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * ComObjectSet.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


//2009/12/04

#pragma once

#include <sol/com/ComObject.h>


namespace SOL {

class ComObjectSet :public ComObject {

public:
    ComObjectSet(IDispatch* pDisp=NULL)
    :ComObject(pDisp)
    {

    }

public:
    ~ComObjectSet() 
    {
    }


public:
    virtual long getCount() 
    {
        return 0;
    }

public:
    //2009/12/12
    virtual IEnumVARIANT* getNewEnum()
    {
        HRESULT hr = E_FAIL;

        VARIANT result;
        VariantInit(&result);
        hr = getProperty(L"_NewEnum", &result);
        if (FAILED (hr)) {
            throw hr;
        }
    
        IUnknown * pUnk = result.pdispVal;
            
        IEnumVARIANT* pEnumVar = NULL;

        if (pUnk) {

              hr = pUnk->QueryInterface(IID_IEnumVARIANT, (void **)&pEnumVar);
            pUnk->Release();
            pEnumVar->Reset();

            if (FAILED (hr)) {
                throw hr;
            }
        } else {
            throw E_POINTER;
        }

        return pEnumVar;
    }

public:
    virtual HRESULT getNewEnum(IEnumVARIANT** ppEnumVar)
    {
        HRESULT hr = E_FAIL;
        if (ppEnumVar == NULL) {
            return hr;
        }

        VARIANT result;
        VariantInit(&result);
        
        if (FAILED (hr = getProperty(L"_NewEnum", &result))) {
            throw hr;
        } 
        
        IUnknown * pUnk = result.pdispVal;
        if (pUnk) {
              hr = pUnk->QueryInterface(IID_IEnumVARIANT, (void **)ppEnumVar);
            pUnk->Release();
            if (FAILED(hr)) {
                throw hr;
            }
        } else {
            throw E_POINTER;
        }
        return hr;
    
    }

};


}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.