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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? polyline.cpp

?? 英文版的 想要的話可以下載了 為大家服務(wù)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
 * POLYLINE.CPP
 * Polyline Component Chapter 19
 *
 * Implementation of the CPolyline class that we expose as a
 * component object.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "polyline.h"


/*
 * CPolyline:CPolyline
 * CPolyline::~CPolyline
 *
 * Constructor Parameters:
 *  pUnkOuter       LPUNKNOWN of the controlling unknown.
 *  pfnDestroy      PFNDESTROYED to call when an object is
 *                  destroyed.
 *  hInst           HINSTANCE of the application we're in.
 */

CPolyline::CPolyline(LPUNKNOWN pUnkOuter, PFNDESTROYED pfnDestroy
    , HINSTANCE hInst)
    {
    m_hWnd=NULL;
    m_hInst=hInst;

    m_cRef=0;
    m_pUnkOuter=pUnkOuter;
    m_pfnDestroy=pfnDestroy;
    m_fDirty=FALSE;

    m_pImpIPolyline=NULL;
    m_pImpIConnPtCont=NULL;

    m_pAdv=NULL;
    m_pConnPt=NULL;

    m_pST  =NULL;
    m_cf   =0;
    //CHAPTER19MOD
    m_clsID=CLSID_Polyline19;
    //End CHAPTER19MOD

    m_pIStorage=NULL;
    m_pIStream =NULL;

    m_pImpIPersistStorage=NULL;
    m_pImpIPersistStreamInit=NULL;

    m_pImpIDataObject   =NULL;
    m_pIDataAdviseHolder=NULL;

    //CHAPTER19MOD
    m_pDefIUnknown       =NULL;
    m_pDefIDataObject    =NULL;
    m_pDefIViewObject    =NULL;
    m_pDefIPersistStorage=NULL;

    m_pIOleAdviseHolder =NULL;
    m_pImpIOleObject    =NULL;
    m_pIOleClientSite   =NULL;
    m_pImpIViewObject   =NULL;
    m_pIAdviseSink      =NULL;

    m_dwFrozenAspects   =0;
    m_dwAdviseAspects   =0;
    m_dwAdviseFlags     =0;

    m_pImpIRunnableObject=NULL;
    m_hDlg=NULL;
    //End CHAPTER19MOD

    return;
    }


CPolyline::~CPolyline(void)
    {
    //CHAPTER19MOD
    LPUNKNOWN       pIUnknown=this;

    if (NULL!=m_pUnkOuter)
        pIUnknown=m_pUnkOuter;
    //End CHAPTER19MOD

    if (NULL!=m_pST)
        delete m_pST;

    //CHAPTER19MOD
    if (NULL!=m_hDlg)
        DestroyWindow(m_hDlg);

    /*
     * In aggregation, release cached pointers but
     * AddRef the controlling unknown first.  The
     * extra reference count protects us from reentrancy.
     */

    m_cRef++;

    pIUnknown->AddRef();
    pIUnknown->AddRef();
    pIUnknown->AddRef();

    ReleaseInterface(m_pDefIViewObject);
    ReleaseInterface(m_pDefIDataObject);
    ReleaseInterface(m_pDefIPersistStorage);

    m_cRef--;

    //Cached pointer rules do not apply to IUnknown
    ReleaseInterface(m_pDefIUnknown);

    ReleaseInterface(m_pIAdviseSink);
    ReleaseInterface(m_pIOleClientSite);
    ReleaseInterface(m_pIOleAdviseHolder);

    DeleteInterfaceImp(m_pImpIOleObject);
    DeleteInterfaceImp(m_pImpIViewObject);
    DeleteInterfaceImp(m_pImpIRunnableObject);
    //End CHAPTER19MOD

    ReleaseInterface(m_pIDataAdviseHolder);
    DeleteInterfaceImp(m_pImpIDataObject);

    DeleteInterfaceImp(m_pImpIPersistStreamInit);
    DeleteInterfaceImp(m_pImpIPersistStorage);
    ReleaseInterface(m_pIStream);
    ReleaseInterface(m_pIStorage);

    DeleteInterfaceImp(m_pImpIConnPtCont);
    DeleteInterfaceImp(m_pImpIPolyline);

    ReleaseInterface(m_pAdv);
    ReleaseInterface(m_pConnPt);

    return;
    }




/*
 * CPolyline::Init
 *
 * Purpose:
 *  Performs any intiailization of a CPolyline that's prone to
 *  failure that we also use internally before exposing the
 *  object outside this DLL.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if the function is successful,
 *                  FALSE otherwise.
 */

BOOL CPolyline::Init(void)
    {
    LPUNKNOWN       pIUnknown=this;
    //CHAPTER19MOD
    HRESULT         hr;
    //End CHAPTER19MOD

    if (NULL!=m_pUnkOuter)
        pIUnknown=m_pUnkOuter;

    m_pST=new CStringTable(m_hInst);

    if (!m_pST->Init(IDS_POLYLINEMIN, IDS_POLYLINEMAX))
        return FALSE;

    m_cf=RegisterClipboardFormat(SZPOLYLINECLIPFORMAT);

    m_pImpIPersistStorage=new CImpIPersistStorage(this, pIUnknown);

    if (NULL==m_pImpIPersistStorage)
        return FALSE;

    m_pImpIPersistStreamInit=new CImpIPersistStreamInit(this
        , pIUnknown);

    if (NULL==m_pImpIPersistStreamInit)
        return FALSE;

    m_pImpIPolyline=new CImpIPolyline(this, pIUnknown);

    if (NULL==m_pImpIPolyline)
        return FALSE;

    m_pImpIConnPtCont=new CImpIConnPtCont(this, pIUnknown);

    if (NULL==m_pImpIConnPtCont)
        return FALSE;

    m_pConnPt=new CConnectionPoint(this);

    if (NULL==m_pConnPt)
        return FALSE;

    m_pConnPt->AddRef();    //Reversed in destructor

    m_pImpIDataObject=new CImpIDataObject(this, pIUnknown);

    if (NULL==m_pImpIDataObject)
        return FALSE;

    //CHAPTER19MOD
    //FORMATETC arrays not needed:  using Def Handler

    m_pImpIOleObject=new CImpIOleObject(this, pIUnknown);

    if (NULL==m_pImpIOleObject)
        return FALSE;

    m_pImpIViewObject=new CImpIViewObject(this, pIUnknown);

    if (NULL==m_pImpIViewObject)
        return FALSE;

    m_pImpIRunnableObject=new CImpIRunnableObject(this, pIUnknown);

    if (NULL==m_pImpIRunnableObject)
        return FALSE;

    /*
     * We're sitting at ref count 0 and the next call will AddRef a
     * few times and Release a few times.  This insures we don't
     * delete ourselves prematurely.
     */
    m_cRef++;

    //Aggregate OLE's cache for IOleCache* interfaces.
    hr=CreateDataCache(pIUnknown, CLSID_Polyline19
        , IID_IUnknown, (PPVOID)&m_pDefIUnknown);

    if (FAILED(hr))
        return FALSE;

    /*
     * NOTE:  The spec specifically states that any interfaces
     * besides IUnknown that we obtain on an aggregated object
     * should be Released immediately after we QueryInterface for
     * them because the QueryInterface will AddRef us, and since
     * we would not release these interfaces until we were
     * destroyed, we'd never go away because we'd never get a zero
     * ref count.
     */

    //Now try to get other interfaces to which we delegate
    hr=m_pDefIUnknown->QueryInterface(IID_IViewObject2
        , (PPVOID)&m_pDefIViewObject);

    if (FAILED(hr))
        return FALSE;

    pIUnknown->Release();

    hr=m_pDefIUnknown->QueryInterface(IID_IDataObject
        , (PPVOID)&m_pDefIDataObject);

    if (FAILED(hr))
        return FALSE;

    pIUnknown->Release();

    hr=m_pDefIUnknown->QueryInterface(IID_IPersistStorage
        , (PPVOID)&m_pDefIPersistStorage);

    if (FAILED(hr))
        return FALSE;

    pIUnknown->Release();

    m_cRef--;
    m_pImpIPolyline->New();
    //End CHAPTER19MOD

    return TRUE;
    }







/*
 * CPolyline::QueryInterface
 * CPolyline::AddRef
 * CPolyline::Release
 *
 * Purpose:
 *  IUnknown members for CPolyline object.
 */

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

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

    if (IID_IConnectionPointContainer==riid)
        *ppv=m_pImpIConnPtCont;

    if (IID_IPolyline10==riid)
        *ppv=m_pImpIPolyline;

    if (IID_IPersistStorage==riid)
        *ppv=m_pImpIPersistStorage;

    if (IID_IPersist==riid || IID_IPersistStream==riid
        || IID_IPersistStreamInit==riid)
        *ppv=m_pImpIPersistStreamInit;

    if (IID_IDataObject==riid)
        *ppv=m_pImpIDataObject;

    //CHAPTER19MOD
    if (IID_IOleObject==riid)
        *ppv=m_pImpIOleObject;

    if (IID_IViewObject==riid || IID_IViewObject2==riid)
        *ppv=m_pImpIViewObject;

    if (IID_IRunnableObject==riid)
        *ppv=m_pImpIRunnableObject;

    //Use the default handler's cache.
    if (IID_IOleCache==riid || IID_IOleCache2==riid)
        return m_pDefIUnknown->QueryInterface(riid, ppv);
    //End CHAPTER19MOD

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

    return ResultFromScode(E_NOINTERFACE);
    }


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


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

    if (NULL!=m_pfnDestroy)
        (*m_pfnDestroy)();

    delete this;
    return 0L;
    }







/*
 * CPolyline::RectConvertMappings
 *
 * Purpose:
 *  Converts the contents of a rectangle from device (MM_TEXT) or
 *  HIMETRIC to the other.
 *
 * Parameters:
 *  pRect           LPRECT containing the rectangle to convert.
 *  fToDevice       BOOL TRUE to convert from HIMETRIC to device,
 *                  FALSE to convert device to HIMETRIC.
 *
 * Return Value:
 *  None
 */

void CPolyline::RectConvertMappings(LPRECT pRect, BOOL fToDevice)
    {
    HDC      hDC;
    int      iLpx, iLpy;

    if (NULL==pRect)
        return;

    hDC=GetDC(NULL);
    iLpx=GetDeviceCaps(hDC, LOGPIXELSX);
    iLpy=GetDeviceCaps(hDC, LOGPIXELSY);
    ReleaseDC(NULL, hDC);

    if (fToDevice)
        {
        pRect->left=MulDiv(iLpx, pRect->left, HIMETRIC_PER_INCH);
        pRect->top =MulDiv(iLpy, pRect->top , HIMETRIC_PER_INCH);

        pRect->right =MulDiv(iLpx, pRect->right, HIMETRIC_PER_INCH);
        pRect->bottom=MulDiv(iLpy, pRect->bottom,HIMETRIC_PER_INCH);
        }
    else
        {
        pRect->left=MulDiv(pRect->left, HIMETRIC_PER_INCH, iLpx);
        pRect->top =MulDiv(pRect->top , HIMETRIC_PER_INCH, iLpy);

        pRect->right =MulDiv(pRect->right, HIMETRIC_PER_INCH, iLpx);
        pRect->bottom=MulDiv(pRect->bottom,HIMETRIC_PER_INCH, iLpy);
        }

    return;
    }



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女厕所小便bbb| 亚洲一区在线观看免费 | 福利电影一区二区| 激情欧美一区二区三区在线观看| 久久成人精品无人区| 黄色小说综合网站| 精品一区二区精品| 懂色av一区二区在线播放| 日韩亚洲欧美一区| 777奇米成人网| 日韩欧美一区二区视频| 制服视频三区第一页精品| 日韩亚洲欧美在线观看| 2017欧美狠狠色| 中文字幕高清不卡| 亚洲视频一区二区免费在线观看| 亚洲天堂av老司机| 亚洲va韩国va欧美va精品| 蜜臀av一区二区在线观看| 国产专区欧美精品| 成人高清av在线| 91亚洲国产成人精品一区二三| 欧美亚洲国产怡红院影院| 欧美三级三级三级爽爽爽| 91精品在线一区二区| 日韩一区二区三区四区 | 亚洲乱码国产乱码精品精的特点| 亚洲青青青在线视频| 午夜国产精品一区| 久久精品国产免费看久久精品| 国产一区二区按摩在线观看| 波多野结衣精品在线| 欧美性做爰猛烈叫床潮| 国产69精品一区二区亚洲孕妇| 成人午夜av影视| 欧美性一区二区| 欧美电影免费观看高清完整版在 | 欧美剧在线免费观看网站| 日韩精品一区二区三区在线播放 | 2022国产精品视频| 欧美极品美女视频| 亚洲一区二区av在线| 另类小说综合欧美亚洲| 97国产精品videossex| 91精品国产综合久久婷婷香蕉| 久久久久久久免费视频了| 一区二区三区美女视频| 久久99久久99小草精品免视看| 国产91高潮流白浆在线麻豆| 欧美日韩美女一区二区| 国产欧美日韩视频在线观看| 国产成人精品免费看| 美腿丝袜一区二区三区| 豆国产96在线|亚洲| 欧美日韩情趣电影| 欧美国产精品中文字幕| 日韩电影免费在线| 成人黄页在线观看| 日韩午夜在线影院| 亚洲精品久久嫩草网站秘色| 久久国产精品72免费观看| 91久久人澡人人添人人爽欧美| 精品免费视频一区二区| 亚洲午夜成aⅴ人片| 丁香五精品蜜臀久久久久99网站 | 欧美一卡2卡3卡4卡| 成人免费一区二区三区在线观看| 蜜臀av一区二区三区| 日本丶国产丶欧美色综合| 2022国产精品视频| 日韩电影在线观看电影| 在线观看国产日韩| 中文字幕乱码亚洲精品一区| 久久精品国产精品亚洲精品| 欧美伦理电影网| 一区二区三区成人在线视频| 春色校园综合激情亚洲| 久久久久久一级片| 亚洲精品乱码久久久久久久久| 精品夜夜嗨av一区二区三区| 欧美日韩一二区| 中文字幕五月欧美| 国产91精品露脸国语对白| 精品动漫一区二区三区在线观看| 亚洲一二三四在线观看| 91视频观看视频| 国产精品天美传媒| 国产精品1024久久| 2019国产精品| 国产一区二区免费在线| 精品久久久三级丝袜| 日本视频免费一区| 欧美二区在线观看| 亚洲午夜一区二区| 精品视频999| 亚洲综合色自拍一区| 色88888久久久久久影院野外 | 国产精品亚洲午夜一区二区三区| 日韩欧美一区中文| 美腿丝袜一区二区三区| 777奇米成人网| 免费观看在线色综合| 日韩一区二区视频| 老色鬼精品视频在线观看播放| 日韩欧美一级精品久久| 看片网站欧美日韩| 亚洲欧美欧美一区二区三区| 久久国产夜色精品鲁鲁99| 欧美一级国产精品| 开心九九激情九九欧美日韩精美视频电影 | 天涯成人国产亚洲精品一区av| 在线观看亚洲a| 亚洲成a人片在线观看中文| 欧美日本不卡视频| 日韩成人dvd| 精品剧情v国产在线观看在线| 极品美女销魂一区二区三区免费| 久久久精品免费免费| 成人一区二区视频| 国产精品久久久久aaaa樱花| 99久久伊人久久99| 亚洲自拍偷拍欧美| 91精品国产一区二区三区| 看片的网站亚洲| 中文乱码免费一区二区| 91浏览器在线视频| 视频一区二区欧美| 精品久久久久久久人人人人传媒| 国产精品影音先锋| 亚洲美女视频在线观看| 91精品国产日韩91久久久久久| 激情综合五月婷婷| 亚洲人精品午夜| 日韩欧美中文字幕制服| 成人免费视频视频在线观看免费| 日韩一区在线免费观看| 国产日韩欧美不卡| 成人av资源网站| 性欧美大战久久久久久久久| 日韩精品一区二区三区swag| 不卡的电影网站| 亚洲va韩国va欧美va精品| 久久久久久久久免费| 99精品在线免费| 日本不卡免费在线视频| 国产女人18水真多18精品一级做| 欧美在线一二三四区| 激情六月婷婷久久| 亚洲精选免费视频| 久久综合九色综合欧美98| 色综合久久天天| 寂寞少妇一区二区三区| 一区二区在线看| 久久久亚洲精品石原莉奈| 在线欧美日韩国产| 国产一区二区按摩在线观看| 亚洲国产视频一区| 欧美激情一二三区| 91精品欧美一区二区三区综合在 | 2021国产精品久久精品| 在线日韩国产精品| 国产精品99久| 免费人成精品欧美精品| 亚洲免费观看高清完整版在线观看| 日韩欧美在线123| 欧美最猛性xxxxx直播| 国产成人丝袜美腿| 美女在线观看视频一区二区| 亚洲免费电影在线| 国产拍揄自揄精品视频麻豆| 日韩一区二区三区观看| 欧美性猛片xxxx免费看久爱| 国产一区91精品张津瑜| 婷婷久久综合九色综合绿巨人| 国产精品第一页第二页第三页| 日韩欧美在线一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 成人永久aaa| 极品少妇一区二区| 免费xxxx性欧美18vr| 亚洲国产cao| 亚洲精品亚洲人成人网在线播放| 国产视频一区二区在线观看| 欧美大片一区二区| 337p亚洲精品色噜噜| 欧美探花视频资源| 色哟哟在线观看一区二区三区| 国产91精品一区二区麻豆网站| 国产自产高清不卡| 激情伊人五月天久久综合| 石原莉奈在线亚洲二区| 亚洲一区二区三区四区不卡| 亚洲日穴在线视频| 亚洲欧洲一区二区三区| 国产精品久久影院| 欧美国产综合色视频| 国产女人18毛片水真多成人如厕| 国产亚洲欧美日韩俺去了| 久久色在线观看| 久久综合资源网|