亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iclassf.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * ICLASSF.CPP
 * Cosmo Chapter 14
 *
 * Implementation of a class factory for Cosmo's OLE Automation
 * support.  This same implementation handles CLSID_CosmoFigure
 * as well as CLSID_Cosmo2Application.  The CLSID is given to the
 * constructor.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "cosmo.h"


/*
 * CClassFactory::CClassFactory
 * CClassFactory::~CClassFactory
 *
 * Constructor Parameters:
 *  pFR             PCCosmoFrame that can create documents.
 *  rclsID          REFCLSID of the object this factory should
 *                  create.
 */

CClassFactory::CClassFactory(PCCosmoFrame pFR, REFCLSID rclsID)
    {
    m_cRef=0L;
    m_pFR=pFR;
    m_clsID=rclsID;
    m_fCreated=FALSE;
    return;
    }


CClassFactory::~CClassFactory(void)
    {
    return;
    }




/*
 * CClassFactory::QueryInterface
 * CClassFactory::AddRef
 * CClassFactory::Release
 */

STDMETHODIMP CClassFactory::QueryInterface(REFIID riid
    , PPVOID ppv)
    {
    *ppv=NULL;

    if (IID_IUnknown==riid || IID_IClassFactory==riid)
        *ppv=this;

    if (NULL!=*ppv)
        {
        ((LPUNKNOWN)*ppv)->AddRef();
        return NOERROR;
        }

    return ResultFromScode(E_NOINTERFACE);
    }


STDMETHODIMP_(ULONG) CClassFactory::AddRef(void)
    {
    return ++m_cRef;
    }


STDMETHODIMP_(ULONG) CClassFactory::Release(void)
    {
    if (0!=--m_cRef)
        return m_cRef;

    delete this;
    return 0;
    }




/*
 * CClassFactory::CreateInstance
 *
 * Purpose:
 *  Instantiates a Figure object that supports embedding.
 *
 * Parameters:
 *  pUnkOuter       LPUNKNOWN to the controlling IUnknown if we are
 *                  being used in an aggregation.
 *  riid            REFIID identifying the interface the caller
 *                  desires to have for the new object.
 *  ppvObj          PPVOID in which to store the desired
 *                  interface pointer for the new object.
 *
 * Return Value:
 *  HRESULT         NOERROR if successful, otherwise contains
 *                  E_NOINTERFACE if we cannot support the requested
 *                  interface.
 */

STDMETHODIMP CClassFactory::CreateInstance(LPUNKNOWN pUnkOuter
    , REFIID riid, PPVOID ppvObj)
    {
    HRESULT             hr;

    *ppvObj=NULL;

    /*
     * We can only create one instance of the application object
     * from this factory, but we can create multiple figure
     * objects.  Creation of a figure never sets this flag.
     */
    if (m_fCreated)
        return ResultFromScode(E_UNEXPECTED);

    hr=ResultFromScode(E_OUTOFMEMORY);

    //We don't support aggregation
    if (NULL!=pUnkOuter)
        return ResultFromScode(CLASS_E_NOAGGREGATION);

    //Check which class we're supposed to create
    if (CLSID_Cosmo2Application==m_clsID)
        {
        /*
         * By virtue of this application running, the frame
         * object has already created the 'application' object
         * we want to return.  So we just grab the right interface
         * pointer from it.
         */
        hr=m_pFR->AutoApp()->QueryInterface(riid, ppvObj);

        //Assume we created an object.
        g_cObj++;
        }


    if (CLSID_CosmoFigure==m_clsID)
        {
        /*
         * We can actually use the Figures collection object
         * that the client object maintains since it has
         * creation code in it already.
         */
        IDispatch      *pIDispatch;
        ICosmoFigures  *pICosmoFigs;

        pIDispatch=m_pFR->AutoApp()->get_Figures();

        if (NULL!=pIDispatch)
            {
            /*
             * We have the collection IDispatch, we want to
             * call the Add method which we can do through
             * ICosmoFigures.
             */
            if (SUCCEEDED(pIDispatch->QueryInterface
                (IID_ICosmoFigures, (PPVOID)&pICosmoFigs)))
                {
                pIDispatch->Release();

                /*
                 * Get the pointer for the new figure.  This will
                 * increment g_cObj when successful.
                 */
                pIDispatch=pICosmoFigs->Add();

                if (NULL!=pIDispatch)
                    {
                    //Get the originally requested pointer.
                    hr=pIDispatch->QueryInterface(riid, ppvObj);
                    pIDispatch->Release();

                    /*
                     * Also force an AddRef on the application object
                     * to prevent shutdown when we access it through
                     * Figure::Application.  Such an access would
                     * AddRef it and Release it, then cause shutdown.
                     * The application object isn't any good any more.
                     *
                     * Note that since we didn't put the /Automation
                     * flag on the LocalServer[32] entry for the
                     * figure CLSID (we did for the app CLSID) then
                     * the app class factory was never registered
                     * and there's no danger of the app object being
                     * created later.
                     */
                    m_pFR->AutoApp()->AddRef();
                    }
                else
                    g_cObj++;   //To fake shutdown
                }
            }
        }

    /*
     * By assuming we created an object (with g_cObj++) allows us
     * to just call ObjectDestroyed to do shutdown as necessary.
     * If this CreateInstance was for the application object,
     * then this app was launched for the purpose of getting
     * at the object, so shutdown will occur (the class factory
     * is only registered if /Automation is present).
     *
     * For the Figure object, that class factory is always
     * registered, so there might be other object and there
     * might be user control, so ObjectDestroyed will not necessarily
     * cause shutdown.
     */

    if (FAILED(hr))
        ObjectDestroyed();
    else
        {
        //Prevent second 'instantiations' of the application object.
        m_fCreated=(CLSID_Cosmo2Application==m_clsID);
        }

    return hr;
    }






/*
 * CClassFactory::LockServer
 *
 * Purpose:
 *  Increments or decrements the lock count of the serving
 *  IClassFactory object.  When the number of locks goes to
 *  zero and the number of objects is zero, we shut down the
 *  application.
 *
 * Parameters:
 *  fLock           BOOL specifying whether to increment or
 *                  decrement the lock count.
 *
 * Return Value:
 *  HRESULT         NOERROR always.
 */

STDMETHODIMP CClassFactory::LockServer(BOOL fLock)
    {
    if (fLock)
        g_cLock++;
    else
        {
        g_cLock--;
        g_cObj++;
        ObjectDestroyed();
        }

    return NOERROR;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线电影| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 精品国产乱码久久久久久影片| 日韩一区二区精品在线观看| 国产精品久久久久久久岛一牛影视| 亚洲亚洲人成综合网络| 国产福利一区二区| 欧美系列亚洲系列| 亚洲va韩国va欧美va精品| 九色综合狠狠综合久久| 91久久精品一区二区三区| 中文字幕精品三区| 亚洲欧洲精品一区二区精品久久久 | 黑人精品欧美一区二区蜜桃| 亚洲天堂久久久久久久| 综合久久久久综合| 中文字幕综合网| 亚洲一区二区偷拍精品| 舔着乳尖日韩一区| 国产在线一区观看| 国产精品一区二区你懂的| 成人性色生活片免费看爆迷你毛片| 国产欧美一区二区精品性色超碰| 在线看不卡av| 欧美系列亚洲系列| 日韩精品资源二区在线| 国产欧美日韩在线观看| 亚洲欧美电影一区二区| 舔着乳尖日韩一区| 菠萝蜜视频在线观看一区| 欧美午夜理伦三级在线观看| 久久尤物电影视频在线观看| 精品国产乱码久久久久久蜜臀| 亚洲国产高清在线观看视频| 亚洲卡通欧美制服中文| 国产精品亚洲第一区在线暖暖韩国| 亚洲蜜臀av乱码久久精品| 亚洲激情欧美激情| 日本亚洲最大的色成网站www| 国产·精品毛片| 国产成人鲁色资源国产91色综| 亚洲欧美aⅴ...| 欧美一区二区三区视频免费播放| 成人av免费在线观看| 国产精品久久看| 亚洲欧洲日韩女同| 欧美一卡二卡在线观看| 91精品一区二区三区久久久久久| 制服.丝袜.亚洲.另类.中文| 91精品在线麻豆| 国产精品久久久久aaaa| 日韩精品国产欧美| 成人精品免费看| 欧美一区二区精品在线| 亚洲视频免费看| 国产精品亚洲综合一区在线观看| www.亚洲国产| 久久综合色8888| 亚洲国产日产av| 91丨国产丨九色丨pron| 久久综合九色综合97_久久久| 一二三四社区欧美黄| 国产一区在线不卡| 亚洲精品一区二区三区蜜桃下载| 欧美精品在线观看播放| 成人一区二区三区| 成人午夜伦理影院| 免费一区二区视频| 91免费观看视频| 国产成人欧美日韩在线电影| 欧美蜜桃一区二区三区 | 一本色道久久综合亚洲aⅴ蜜桃| 国产成人免费在线观看不卡| 激情深爱一区二区| 99久久精品一区| 91精品国产综合久久久久久久久久 | 亚洲精品ww久久久久久p站| 日韩电影免费一区| 91精品一区二区三区久久久久久| 亚洲精品免费看| 欧美日韩国产综合草草| 婷婷成人激情在线网| 欧美性色黄大片手机版| 肉色丝袜一区二区| 日韩美女主播在线视频一区二区三区| 亚洲最新在线观看| 在线成人高清不卡| 国产成人自拍在线| 亚洲一级在线观看| 欧美成人精精品一区二区频| 同产精品九九九| 久久奇米777| 在线中文字幕一区| 丁香婷婷综合五月| 五月婷婷综合网| 综合av第一页| 久久精品人人做人人综合 | 水蜜桃久久夜色精品一区的特点 | 日韩欧美在线不卡| 色综合久久中文综合久久牛| 久久精品国产99久久6| 中文字幕在线视频一区| 91精品婷婷国产综合久久竹菊| 国产精品影视在线| 免费三级欧美电影| 视频一区中文字幕| 国产精品二三区| 日本一区二区电影| 337p粉嫩大胆色噜噜噜噜亚洲| 色婷婷久久久综合中文字幕| 开心九九激情九九欧美日韩精美视频电影| 中文字幕一区二区在线播放| 国产亚洲成av人在线观看导航| 日韩一二三四区| 精品欧美一区二区三区精品久久 | 麻豆视频一区二区| 亚洲午夜成aⅴ人片| 亚洲国产视频一区二区| 亚洲综合在线免费观看| 一区二区免费在线播放| ...xxx性欧美| 亚洲国产视频网站| 日韩精品亚洲专区| 日韩av电影天堂| 久久成人免费网站| 成人久久久精品乱码一区二区三区| 国产在线视频一区二区| 国产传媒欧美日韩成人| 99久久综合国产精品| 91高清在线观看| 91精品在线免费观看| 久久久精品国产免大香伊| 亚洲天堂成人网| 精品一区二区三区av| 色综合网站在线| 亚洲精品一区二区三区99| 久久久国产精品不卡| 亚洲成人午夜电影| 国产精品一区二区久久精品爱涩| 91麻豆免费观看| 久久精品人人做| 极品美女销魂一区二区三区免费| 91在线精品一区二区三区| 欧美xxx久久| 视频一区二区欧美| 色婷婷狠狠综合| 国产精品人人做人人爽人人添| 亚洲电影中文字幕在线观看| 成人精品小蝌蚪| 国产欧美一二三区| 国产又粗又猛又爽又黄91精品| 欧美日韩国产一区二区三区地区| 国产精品久久三区| 国产盗摄一区二区三区| 久久夜色精品一区| 国产一区在线精品| 欧美国产国产综合| 成人午夜电影久久影院| 国产精品不卡在线| 色综合色综合色综合色综合色综合| 中文欧美字幕免费| 91免费视频网| 亚洲1区2区3区视频| 91精品国产乱码| 风间由美一区二区三区在线观看 | 国产一区二区三区四区在线观看| 久久综合久久99| av资源网一区| 亚洲1区2区3区视频| 日韩欧美成人一区| 国产在线播放一区二区三区| 久久精品一区蜜桃臀影院| 一本色道久久综合亚洲91| 天天综合网天天综合色| 欧美精品一区二区三| 99久久伊人精品| 另类综合日韩欧美亚洲| 亚洲欧美偷拍三级| 精品福利一区二区三区| av福利精品导航| 欧美成人一区二区三区在线观看 | 日韩不卡免费视频| 亚洲欧洲av在线| 国产亚洲欧美激情| 欧美电影在线免费观看| 日本道在线观看一区二区| 日本中文字幕一区二区有限公司| 国产精品素人一区二区| 国产日韩高清在线| jlzzjlzz国产精品久久| 欧美日韩一区在线| 亚洲码国产岛国毛片在线| 欧美日韩国产一级二级| 福利91精品一区二区三区| 久久精品国产网站| 久久精品国产免费| 日本亚洲一区二区| 美女视频黄久久| 韩国午夜理伦三级不卡影院| 美腿丝袜亚洲三区|