⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfbase.cpp

📁 VB圣经
💻 CPP
字号:
#include "stdafx.h"
//---------------------------------------------------------------------
//                  The CBaseClassFactory implementation
//---------------------------------------------------------------------

STDMETHODIMP
CBaseClassFactory::QueryInterface(REFIID riid, void** ppvObj)
{
    switch (riid.Data1)
    {
        case 0: //IUnknown
        case 1: //IClassFactory
            if (IIDOK(IUnknown) || IIDOK(IClassFactory))
            {
                *ppvObj = this;
                m_dwRefs++;
                return NOERROR;
                break;
            }
            // Fall Through
        default:
            *ppvObj = NULL;
            return E_NOINTERFACE;
    }
}

STDMETHODIMP        
CBaseClassFactory::CreateInstance(IUnknown FAR* pUnkOuter, REFIID riid, void FAR* FAR* ppv)
{
    IUnknown FAR *pcdt = NULL;
    HRESULT hr;

    //No aggregation
    if (pUnkOuter)
    {
        return CLASS_E_NOAGGREGATION;
    }
    else if (!IIDOK(IUnknown) && (m_pIID && !IsEqualIID(riid, *m_pIID)))
    {
        return E_NOINTERFACE;
    }
      
    if FAILED(hr = Create(&pcdt))
    {
        *ppv = NULL;
        return hr;
    }
    else if(pcdt == NULL)
    {
        *ppv = NULL;
        return E_FAIL;
    }
    hr = pcdt->QueryInterface(riid, ppv);
    pcdt->Release();
    return hr;
}

⌨️ 快捷键说明

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