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

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

?? dllpoly.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * DLLPOLY.CPP
 * Polyline Component Chapter 8
 *
 * 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)
    {
    //CHAPTER8MOD
    if (CLSID_Polyline8!=rclsid)
        return ResultFromScode(E_FAIL);
    //End CHAPTER8MOD

    //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
 * CPolylineClassFactory::~CPolylineClassFactory
 */

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

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一区二区三区免费野_久草精品视频
精品乱人伦小说| 九色综合狠狠综合久久| 日韩精品久久久久久| 成人深夜福利app| 欧美久久一二区| 亚洲欧美日韩久久精品| 精品影院一区二区久久久| 91在线免费播放| 国产亚洲成年网址在线观看| 爽爽淫人综合网网站| 91精品国产综合久久香蕉的特点| 国产日韩欧美精品电影三级在线| 日本不卡不码高清免费观看| 91丝袜国产在线播放| 久久久精品影视| 精品无人码麻豆乱码1区2区| 欧美日本在线一区| 亚洲黄色免费电影| 99在线热播精品免费| 国产三级欧美三级日产三级99 | 欧美日韩免费一区二区三区视频| 久久这里都是精品| 麻豆极品一区二区三区| 在线播放视频一区| 亚洲成人一区在线| 欧美亚洲国产一区在线观看网站| 国产欧美一区二区三区沐欲| 日韩av一级片| 日韩一区二区三区视频在线| 亚洲成人第一页| 欧美日韩二区三区| 亚洲国产aⅴ成人精品无吗| 欧美亚洲丝袜传媒另类| 亚洲免费在线看| av在线一区二区| 综合电影一区二区三区 | 国产一区二区视频在线播放| 日韩午夜电影av| 美腿丝袜亚洲一区| 日韩午夜av一区| 国产一区二区三区日韩 | 夜夜爽夜夜爽精品视频| 91免费在线看| 亚洲小说欧美激情另类| 欧美日韩免费一区二区三区| 午夜欧美2019年伦理| 91精品在线免费| 国产一区二区三区在线观看免费| 精品福利二区三区| 丁香亚洲综合激情啪啪综合| 中文字幕av免费专区久久| 99久久伊人久久99| 一区二区成人在线观看| 欧美区在线观看| 精品一区免费av| 欧美国产日韩精品免费观看| 91啦中文在线观看| 爽好多水快深点欧美视频| 精品区一区二区| a在线欧美一区| 亚洲福利一区二区三区| 欧美精品一区二区三| 成人精品小蝌蚪| 午夜精品在线看| 国产日韩欧美一区二区三区乱码| 91理论电影在线观看| 婷婷国产v国产偷v亚洲高清| www国产亚洲精品久久麻豆| av不卡在线观看| 日韩国产一二三区| 欧美国产激情一区二区三区蜜月| 色天天综合色天天久久| 久久91精品久久久久久秒播| 国产精品美女久久久久av爽李琼 | 极品少妇xxxx偷拍精品少妇| 久久综合九色综合欧美98| 日本高清免费不卡视频| 日本欧美肥老太交大片| 国产欧美一区二区精品婷婷| 成人福利视频网站| 亚洲国产精品久久久久秋霞影院| 91麻豆精品在线观看| 亚洲欧美国产77777| 岛国一区二区三区| 亚洲风情在线资源站| 制服丝袜在线91| 色综合久久88色综合天天免费| 婷婷综合久久一区二区三区| 久久蜜桃一区二区| 91久久人澡人人添人人爽欧美| 天天亚洲美女在线视频| 久久久精品国产99久久精品芒果| 91片黄在线观看| 韩日av一区二区| 亚洲欧美电影院| 26uuu欧美| 欧美日韩一区成人| 成人精品在线视频观看| 日韩 欧美一区二区三区| 国产精品―色哟哟| 欧美一区二区视频网站| 国产成人精品一区二区三区四区| 一个色综合网站| 久久久久久97三级| 欧美欧美欧美欧美| av资源网一区| 国产一区二区电影| 五月综合激情网| 久久人人爽爽爽人久久久| 日韩亚洲欧美中文三级| 91玉足脚交白嫩脚丫在线播放| 九九国产精品视频| 亚洲大片免费看| 亚洲视频电影在线| 国产午夜久久久久| 精品久久久久久综合日本欧美| 欧美亚洲禁片免费| 99久久免费视频.com| 国产伦精品一区二区三区视频青涩| 午夜视频在线观看一区二区三区| 亚洲欧洲日本在线| 久久精品夜色噜噜亚洲a∨| 日韩一区国产二区欧美三区| aaa国产一区| 在线观看国产精品网站| 91热门视频在线观看| yourporn久久国产精品| 成人自拍视频在线| 日韩黄色免费网站| 婷婷成人激情在线网| 夜夜精品浪潮av一区二区三区| 日韩一区在线免费观看| 国产女人18毛片水真多成人如厕 | 国产乱人伦偷精品视频不卡| 免费高清在线一区| 丝袜美腿亚洲色图| 国产麻豆精品一区二区| 国产毛片精品一区| 粉嫩在线一区二区三区视频| 成人一级视频在线观看| 成人福利电影精品一区二区在线观看 | 亚洲精品高清在线观看| 中文字幕一区二区三区在线观看| 中文字幕av一区二区三区免费看| 欧美国产精品v| 欧美国产欧美综合| 亚洲成人精品在线观看| 日韩vs国产vs欧美| 激情图片小说一区| 久久国产欧美日韩精品| 国产福利一区二区三区视频在线 | 国产精品福利影院| 一卡二卡欧美日韩| 奇米精品一区二区三区四区| 久久成人av少妇免费| 国产成人一级电影| 成人精品视频一区二区三区尤物| 成人精品国产免费网站| 色婷婷av一区| 欧美一级高清大全免费观看| 久久精品综合网| 亚洲乱码精品一二三四区日韩在线| 亚洲午夜一区二区三区| 香蕉成人伊视频在线观看| 国产精品一区二区三区99| www.日韩在线| 91麻豆精品91久久久久同性| 久久蜜臀中文字幕| 亚洲激情欧美激情| 韩国av一区二区三区| 成人午夜视频在线观看| 91精品国产一区二区三区蜜臀 | 91亚洲国产成人精品一区二区三 | 成人黄色小视频在线观看| 欧美亚洲一区二区在线观看| 精品粉嫩aⅴ一区二区三区四区| 中文字幕av一区 二区| 日本欧洲一区二区| 成人免费高清视频在线观看| 97成人超碰视| 国产精品久久久久久久第一福利| 日韩va亚洲va欧美va久久| 成人一区二区在线观看| 日韩三级精品电影久久久 | 久久噜噜亚洲综合| 日本少妇一区二区| 91麻豆自制传媒国产之光| 26uuu久久综合| 爽好多水快深点欧美视频| 成人高清视频在线观看| 欧美日韩一区中文字幕| 国产欧美一区在线| 日本欧美肥老太交大片| 成人一区在线观看| 久久精品亚洲乱码伦伦中文 | 国产婷婷色一区二区三区四区| 亚洲超碰97人人做人人爱| 99热精品一区二区| 欧美精品一区二区精品网| 亚洲成人免费视频|