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

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

?? dllpoly.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * DLLPOLY.CPP
 * Polyline Component Chapter 19
 *
 * Polyline component object used in CoCosmo that supports a custom
 * interface IPolyline.  Contains DLL entry code and the component
 * object exports DllGetClassObject and DllCanUnloadNow and the
 * class factory object.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#define INITGUIDS
#include "polyline.h"


//Count number of objects and number of locks.
ULONG       g_cObj=0;
ULONG       g_cLock=0;

//DLL Instance handle
HINSTANCE   g_hInst=0;



/*
 * LibMain32 (Win32)
 *
 * Purpose:
 *  Entry point for Win32 DLLs that calls the Win16 LibMain.
 */

#ifdef WIN32
BOOL WINAPI LibMain32(HINSTANCE hInstance, ULONG ulReason
    , LPVOID pvReserved)
    {
    if (DLL_PROCESS_DETACH==ulReason)
        {
        return TRUE;
        }
    else
        {
        if (DLL_PROCESS_ATTACH!=ulReason)
            return TRUE;
        }

    return (0!=LibMain(hInstance, 0,  0, NULL));
    }
#endif



/*
 * LibMain (also called from Win32 LibMain32)
 *
 * Purpose:
 *  DLL-specific entry point called from LibEntry.
 */

int PASCAL LibMain(HINSTANCE hInst, WORD wDataSeg
    , WORD cbHeapSize, LPSTR lpCmdLine)
    {
    WNDCLASS    wc;

    if (GetClassInfo(hInst, SZCLASSPOLYLINE, &wc))
        return (int)hInst;

   #ifndef WIN32
    if (0!=cbHeapSize)
        UnlockData(0);
   #endif

    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.hInstance     = hInst;
    wc.cbClsExtra    = 0;
    wc.lpfnWndProc   = PolylineWndProc;
    wc.cbWndExtra    = CBPOLYLINEWNDEXTRA;
    wc.hIcon         = NULL;
    wc.hCursor       = LoadCursor(NULL, IDC_CROSS);
    wc.hbrBackground = NULL;
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = SZCLASSPOLYLINE;

    if (!RegisterClass(&wc))
        return 0;

    g_hInst=hInst;
    return (int)hInst;
    }







/*
 * DllGetClassObject
 *
 * Purpose:
 *  Provides an IClassFactory for a given CLSID that this DLL is
 *  registered to support.  This DLL is placed under the CLSID
 *  in the registration database as the InProcServer.
 *
 * Parameters:
 *  clsID           REFCLSID that identifies the class factory
 *                  desired.  Since this parameter is passed this
 *                  DLL can handle any number of objects simply
 *                  by returning different class factories here
 *                  for different CLSIDs.
 *
 *  riid            REFIID specifying the interface the caller wants
 *                  on the class object, usually IID_ClassFactory.
 *
 *  ppv             PPVOID in which to return the interface
 *                  pointer.
 *
 * Return Value:
 *  HRESULT         NOERROR on success, otherwise an error code.
 */

HRESULT APIENTRY DllGetClassObject(REFCLSID rclsid
    , REFIID riid, PPVOID ppv)
    {
    //CHAPTER19MOD
    if (CLSID_Polyline19!=rclsid)
        return ResultFromScode(E_FAIL);
    //End CHAPTER19MOD

    //Check that we can provide the interface
    if (IID_IUnknown!=riid && IID_IClassFactory!=riid)
        return ResultFromScode(E_NOINTERFACE);

    //Return our IClassFactory for Polyline objects
    *ppv=new CPolylineClassFactory;

    if (NULL==*ppv)
        return ResultFromScode(E_OUTOFMEMORY);

    //AddRef the object through any interface we return
    ((LPUNKNOWN)*ppv)->AddRef();
    g_cObj++;
    return NOERROR;
    }





/*
 * DllCanUnloadNow
 *
 * Purpose:
 *  Answers if the DLL can be freed, that is, if there are no
 *  references to anything this DLL provides.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if nothing is using us, FALSE otherwise.
 */

STDAPI DllCanUnloadNow(void)
    {
    SCODE   sc;

    //Our answer is whether there are any object or locks
    sc=(0L==g_cObj && 0L==g_cLock) ? S_OK : S_FALSE;
    return ResultFromScode(sc);
    }




/*
 * ObjectDestroyed
 *
 * Purpose:
 *  Function for the Polyline object to call when it gets destroyed.
 *  Since we're in a DLL we only track the number of objects here
 *  letting DllCanUnloadNow take care of the rest.
 */

void ObjectDestroyed(void)
    {
    g_cObj--;
    return;
    }






/*
 * CPolylineClassFactory::CPolylineClassFactory
 *
 * Purpose:
 *  Constructor for an object supporting an IClassFactory that
 *  instantiates Polyline objects.
 *
 * Parameters:
 *  None
 */

CPolylineClassFactory::CPolylineClassFactory(void)
    {
    m_cRef=0L;
    return;
    }





/*
 * CPolylineClassFactory::~CPolylineClassFactory
 *
 * Purpose:
 *  Destructor for a CPolylineClassFactory object.  This will be
 *  called when we Release the object to a zero reference count.
 */

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






/*
 * CPolylineClassFactory::QueryInterface
 * CPolylineClassFactory::AddRef
 * CPolylineClassFactory::Release
 */

STDMETHODIMP CPolylineClassFactory::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) CPolylineClassFactory::AddRef(void)
    {
    return ++m_cRef;
    }


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

    delete this;
    ObjectDestroyed();
    return 0L;
    }







/*
 * CPolylineClassFactory::CreateInstance
 *
 * Purpose:
 *  Instantiates a Polyline object.
 *
 * 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 E_NOINTERFACE
 *                  if we cannot support the requested interface.
 */

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

    *ppvObj=NULL;
    hr=ResultFromScode(E_OUTOFMEMORY);

    //Verify that a controlling unknown asks for IUnknown
    if (NULL!=pUnkOuter && IID_IUnknown!=riid)
        return ResultFromScode(E_NOINTERFACE);

    //Create the object.  This also creates a window.
    pObj=new CPolyline(pUnkOuter, ObjectDestroyed, g_hInst);

    if (NULL==pObj)
        return hr;

    if (pObj->Init())
        hr=pObj->QueryInterface(riid, ppvObj);

    //Kill the object if initial creation or Init failed.
    if (FAILED(hr))
        delete pObj;
    else
        g_cObj++;

    return hr;
    }






/*
 * CPolylineClassFactory::LockServer
 *
 * Purpose:
 *  Increments or decrements the lock count of the DLL.  If the lock
 *  count goes to zero and there are no objects, the DLL is allowed
 *  to unload.  See DllCanUnloadNow.
 *
 * Parameters:
 *  fLock           BOOL specifying whether to increment or
 *                  decrement the lock count.
 *
 * Return Value:
 *  HRESULT         NOERROR always.
 */

STDMETHODIMP CPolylineClassFactory::LockServer(BOOL fLock)
    {
    if (fLock)
        g_cLock++;
    else
        g_cLock--;

    return NOERROR;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91农村精品一区二区在线| 欧美韩国一区二区| 国产亚洲午夜高清国产拍精品| 中文字幕综合网| 蜜桃av一区二区| 日本伦理一区二区| 久久精品日产第一区二区三区高清版| 曰韩精品一区二区| 激情综合网av| 91精品国产欧美一区二区18| 亚洲色图欧美在线| 国产精品影视网| 欧美一区二区久久| 亚洲一区中文在线| 成人精品高清在线| 国产欧美一区二区精品忘忧草| 五月天精品一区二区三区| 97精品久久久午夜一区二区三区 | 日本亚洲视频在线| 91九色最新地址| 亚洲欧洲国产日韩| 国产v日产∨综合v精品视频| 欧美成人一区二区| 日本欧美一区二区三区| 欧美高清精品3d| 亚洲国产裸拍裸体视频在线观看乱了| 99九九99九九九视频精品| 国产视频视频一区| 国内精品国产三级国产a久久| 91麻豆精品国产无毒不卡在线观看 | 国产在线不卡视频| 日韩精品影音先锋| 久久精品国产99久久6| 666欧美在线视频| 男女男精品网站| 欧美精品18+| 日韩精品高清不卡| 制服丝袜日韩国产| 青青草国产精品97视觉盛宴| 日韩一二三区不卡| 国产永久精品大片wwwapp| 精品国产乱码久久久久久影片| 美女视频黄久久| 26uuu色噜噜精品一区| 国产精品中文有码| 欧美国产综合一区二区| 99精品视频一区| 亚洲国产日日夜夜| 日韩一区二区影院| 韩国中文字幕2020精品| 国产精品卡一卡二| 在线观看日韩av先锋影音电影院| 亚洲午夜久久久久久久久电影院 | 亚洲国产综合91精品麻豆| 欧美视频一区二区三区在线观看| 亚洲成av人影院| 久久综合狠狠综合久久综合88| 国产综合色精品一区二区三区| 久久精品视频一区二区三区| 一本久久a久久精品亚洲| 一区二区三国产精华液| 日韩一卡二卡三卡四卡| 国产黄色精品网站| 亚洲精品第一国产综合野| 91浏览器在线视频| 欧美aⅴ一区二区三区视频| 国产在线精品国自产拍免费| 精品一区二区三区影院在线午夜| 91老师国产黑色丝袜在线| ww久久中文字幕| 中文字幕佐山爱一区二区免费| 激情六月婷婷久久| 91丨porny丨国产入口| 精品国产一区二区三区久久久蜜月| 91精品国产免费| 麻豆成人免费电影| 国产成人日日夜夜| 国产一区二区伦理片| 亚洲免费av网站| 国产一区不卡在线| 精品国精品自拍自在线| 韩国精品久久久| 夜夜精品视频一区二区 | 无吗不卡中文字幕| 麻豆精品在线视频| 色综合天天综合网天天狠天天| 在线观看日产精品| 91精品国产免费| 午夜视频一区二区| 91在线云播放| 亚洲精品高清视频在线观看| 欧美电影一区二区三区| 国产精品久久久久久久久动漫 | 久久伊人蜜桃av一区二区| 777xxx欧美| 亚洲精品ww久久久久久p站| 91麻豆精品91久久久久同性| 2020日本不卡一区二区视频| 亚洲国产精品久久久男人的天堂| 亚洲少妇最新在线视频| 精品国产乱码久久久久久久| 日韩三级中文字幕| 欧美一区二区三区在线看| 欧美一区二区三区日韩视频| 7777精品伊人久久久大香线蕉| 日韩欧美在线一区二区三区| 欧美精品电影在线播放| 91麻豆高清视频| 国产精品国产三级国产a | 全国精品久久少妇| 久久国产欧美日韩精品| 久久99国产精品尤物| 麻豆免费看一区二区三区| 国产乱淫av一区二区三区| 日日骚欧美日韩| 一区二区成人在线观看| 欧美高清视频一二三区| 99久久精品99国产精品| 麻豆精品在线播放| 午夜欧美大尺度福利影院在线看| 亚洲国产精品自拍| 国产日产欧美一区二区视频| 成人综合在线观看| 国产精品久久久久影院老司| 国产在线一区观看| 日日骚欧美日韩| 精品久久久久一区| 久久久国产一区二区三区四区小说 | 欧美一级黄色大片| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | av福利精品导航| 成人av电影观看| 国产精品自拍网站| 91久久精品网| 欧美精品自拍偷拍动漫精品| 欧美日韩免费视频| 3atv在线一区二区三区| 欧美日韩免费高清一区色橹橹| 精品久久人人做人人爰| 国产精品美日韩| 亚洲成人午夜电影| 国产成人av一区二区三区在线观看| 99热精品一区二区| 717成人午夜免费福利电影| 欧美国产综合一区二区| 日韩一区欧美二区| 成人一区二区三区视频在线观看| 欧美日韩另类一区| 国产精品国产三级国产aⅴ原创 | 久久精品免费在线观看| 精品久久一区二区| 国产精品久久三| 亚洲欧洲另类国产综合| 激情图区综合网| 国产一区二区调教| 丁香婷婷综合色啪| 午夜亚洲国产au精品一区二区| 国产精品久久久久一区二区三区| 精品国产乱码久久久久久蜜臀| 日韩欧美电影在线| 欧美国产综合一区二区| 国产日产亚洲精品系列| 欧美高清在线一区| 日韩黄色片在线观看| 99久久99久久精品免费观看| 国产亲近乱来精品视频 | 蜜臀国产一区二区三区在线播放 | 欧美韩日一区二区三区四区| 日韩专区中文字幕一区二区| 91污在线观看| 日韩情涩欧美日韩视频| 国产真实乱对白精彩久久| 欧美tickling网站挠脚心| 日本成人中文字幕在线视频| 欧美亚洲国产bt| 《视频一区视频二区| 色婷婷一区二区三区四区| 亚洲日韩欧美一区二区在线| 精品一区二区三区在线观看 | 国产成人激情av| 国产精品女主播av| 日韩欧美中文字幕一区| 国产专区欧美精品| 国产精品乱人伦| 678五月天丁香亚洲综合网| 黑人巨大精品欧美黑白配亚洲| 国产天堂亚洲国产碰碰| av一区二区三区黑人| 午夜精品福利一区二区蜜股av | 欧美在线播放高清精品| 日本成人在线不卡视频| 国产精品色婷婷久久58| 欧美日韩国产综合一区二区三区| 国模一区二区三区白浆 | 亚洲啪啪综合av一区二区三区| 在线免费观看成人短视频| 国内精品在线播放| 免费观看30秒视频久久| 一区二区在线免费| 中文字幕免费不卡在线|