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

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

?? idataobj.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * IDATAOBJ.CPP
 * Polyline Component Chapter 19
 *
 * Implementation of the IDataObject interface.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "polyline.h"


/*
 * CImpIDataObject::CImpIDataObject
 * CImpIDataObject::~CImpIDataObject
 *
 * Parameters (Constructor):
 *  pObj            PCPolyline of the object we're in.
 *  pUnkOuter       LPUNKNOWN to which we delegate.
 */

CImpIDataObject::CImpIDataObject(PCPolyline pObj
    , LPUNKNOWN pUnkOuter)
    {
    m_cRef=0;
    m_pObj=pObj;
    m_pUnkOuter=pUnkOuter;
    return;
    }

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




/*
 * CImpIDataObject::QueryInterface
 * CImpIDataObject::AddRef
 * CImpIDataObject::Release
 */

STDMETHODIMP CImpIDataObject::QueryInterface(REFIID riid, PPVOID ppv)
    {
    return m_pUnkOuter->QueryInterface(riid, ppv);
    }


STDMETHODIMP_(ULONG) CImpIDataObject::AddRef(void)
    {
    ++m_cRef;
    return m_pUnkOuter->AddRef();
    }

STDMETHODIMP_(ULONG) CImpIDataObject::Release(void)
    {
    --m_cRef;
    return m_pUnkOuter->Release();
    }





/*
 * CImpIDataObject::GetData
 *
 * Purpose:
 *  Retrieves data described by a specific FormatEtc into a StgMedium
 *  allocated by this function.  Used like GetClipboardData.
 *
 * Parameters:
 *  pFE             LPFORMATETC describing the desired data.
 *  pSTM            LPSTGMEDIUM in which to return the data.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIDataObject::GetData(LPFORMATETC pFE
    , LPSTGMEDIUM pSTM)
    {
    UINT            cf=pFE->cfFormat;

    //Check the aspects we support.
    if (!(DVASPECT_CONTENT & pFE->dwAspect))
        return ResultFromScode(DATA_E_FORMATETC);

    pSTM->pUnkForRelease=NULL;

    //Run creates the window to use as a basis for extents
    m_pObj->m_pImpIRunnableObject->Run(NULL);

    //Go render the appropriate data for the format.
    switch (cf)
        {
        case CF_METAFILEPICT:
            pSTM->tymed=TYMED_MFPICT;
            return m_pObj->RenderMetafilePict(&pSTM->hGlobal);

        case CF_BITMAP:
            pSTM->tymed=TYMED_GDI;
            return m_pObj->RenderBitmap((HBITMAP *)&pSTM->hGlobal);

        default:
            if (cf==m_pObj->m_cf)
                {
                pSTM->tymed=TYMED_HGLOBAL;
                return m_pObj->RenderNative(&pSTM->hGlobal);
                }

            break;
        }

    return ResultFromScode(DATA_E_FORMATETC);
    }




/*
 * CImpIDataObject::GetDataHere
 *
 * Purpose:
 *  Renders the specific FormatEtc into caller-allocated medium
 *  provided in pSTM.
 *
 * Parameters:
 *  pFE             LPFORMATETC describing the desired data.
 *  pSTM            LPSTGMEDIUM providing the medium into which
 *                  wer render the data.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIDataObject::GetDataHere(LPFORMATETC pFE
    , LPSTGMEDIUM pSTM)
    {
    //CHAPTER19MOD
    //We can provide CFSTR_EMBEDSOURCE now.

    UINT        cf;
    HRESULT     hr;

    /*
     * The only reasonable time this is called is for
     * CFSTR_EMBEDSOURCE and TYMED_ISTORAGE (and later for
     * CFSTR_LINKSOURCE).  This means the same as
     * IPersistStorage::Save.
     */

    cf=RegisterClipboardFormat(CFSTR_EMBEDSOURCE);

    //Aspect is unimportant to us here, as is lindex and ptd.
    if (cf==pFE->cfFormat && (TYMED_ISTORAGE & pFE->tymed))
        {
        //We have an IStorage we can write into.
        pSTM->tymed=TYMED_ISTORAGE;
        pSTM->pUnkForRelease=NULL;

        hr=m_pObj->m_pImpIPersistStorage->Save(pSTM->pstg, FALSE);
        m_pObj->m_pImpIPersistStorage->SaveCompleted(NULL);
        return hr;
        }
    //End CHAPTER19MOD

    return ResultFromScode(DATA_E_FORMATETC);
    }






/*
 * CImpIDataObject::QueryGetData
 *
 * Purpose:
 *  Tests if a call to GetData with this FormatEtc will provide
 *  any rendering; used like IsClipboardFormatAvailable.
 *
 * Parameters:
 *  pFE             LPFORMATETC describing the desired data.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIDataObject::QueryGetData(LPFORMATETC pFE)
    {
    UINT            cf=pFE->cfFormat;
    BOOL            fRet=FALSE;

    //Check the aspects we support.
    if (!(DVASPECT_CONTENT & pFE->dwAspect))
        return ResultFromScode(DATA_E_FORMATETC);

    switch (cf)
        {
        case CF_METAFILEPICT:
            fRet=(BOOL)(pFE->tymed & TYMED_MFPICT);
            break;

        case CF_BITMAP:
            fRet=(BOOL)(pFE->tymed & TYMED_GDI);
            break;

        default:
            //Check our own format.
            fRet=((cf==m_pObj->m_cf)
                && (BOOL)(pFE->tymed & TYMED_HGLOBAL));
            break;
        }

    return fRet ? NOERROR : ResultFromScode(S_FALSE);
    }






/*
 * CImpIDataObject::GetCanonicalFormatEtc
 *
 * Purpose:
 *  Provides the caller with an equivalent FormatEtc to the one
 *  provided when different FormatEtcs will produce exactly the
 *  same renderings.
 *
 * Parameters:
 *  pFEIn            LPFORMATETC of the first description.
 *  pFEOut           LPFORMATETC of the equal description.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIDataObject::GetCanonicalFormatEtc
    (LPFORMATETC pFEIn, LPFORMATETC pFEOut)
    {
    if (NULL==pFEOut)
        return ResultFromScode(E_INVALIDARG);

    pFEOut->ptd=NULL;
    return ResultFromScode(DATA_S_SAMEFORMATETC);
    }






/*
 * CImpIDataObject::SetData
 *
 * Purpose:
 *  Places data described by a FormatEtc and living in a StgMedium
 *  into the object.  The object may be responsible to clean up the
 *  StgMedium before exiting.
 *
 * Parameters:
 *  pFE             LPFORMATETC describing the data to set.
 *  pSTM            LPSTGMEDIUM containing the data.
 *  fRelease        BOOL indicating if this function is responsible
 *                  for freeing the data.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIDataObject::SetData(LPFORMATETC pFE
    , LPSTGMEDIUM pSTM, BOOL fRelease)
    {
    UINT            cf=pFE->cfFormat;
    BOOL            fRet=FALSE;
    PPOLYLINEDATA   ppl;

    //Check for our own clipboard format and DVASPECT_CONTENT
    if ((cf!=m_pObj->m_cf) || !(DVASPECT_CONTENT & pFE->dwAspect))
        return ResultFromScode(DATA_E_FORMATETC);

    /*
     * Data can only come from global memory containing a
     * POLYLINEDATA structure that we send to the Polyline's
     * DataSet, a now internal function used from here and
     * from IPersistStorage::Load.
     */

    if (TYMED_HGLOBAL!=pSTM->tymed)
        return ResultFromScode(DATA_E_FORMATETC);

    ppl=(PPOLYLINEDATA)GlobalLock(pSTM->hGlobal);

    if (NULL!=ppl)
        {
        m_pObj->DataSet(ppl, TRUE, TRUE);
        GlobalUnlock(pSTM->hGlobal);
        fRet=TRUE;
        }

    if (fRelease)
        ReleaseStgMedium(pSTM);

    return fRet ? NOERROR : ResultFromScode(DATA_E_FORMATETC);
    }






/*
 * CImpIDataObject::EnumFormatEtc
 *
 * Purpose:
 *  Returns an IEnumFORMATETC object through which the caller can
 *  iterate to learn about all the data formats this object can
 *  provide through either GetData[Here] or SetData.
 *
 * Parameters:
 *  dwDir           DWORD describing a data direction, either
 *                  DATADIR_SET or DATADIR_GET.
 *  ppEnum          LPENUMFORMATETC * in which to return the
 *                  pointer to the enumerator.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIDataObject::EnumFormatEtc(DWORD dwDir
    , LPENUMFORMATETC *ppEnum)
    {
    //CHAPTER19MOD
    //Can now just tell the default handler to do this busy work.
    return m_pObj->m_pDefIDataObject->EnumFormatEtc(dwDir, ppEnum);
    //CHAPTER19MOD
    }




//CHAPTER19MOD
//Removed some comments from this stuff.

/*
 * CImpIDataObject::DAdvise
 * CImpIDataObject::DUnadvise
 * CImpIDataObject::EnumDAdvise
 */

STDMETHODIMP CImpIDataObject::DAdvise(LPFORMATETC pFE, DWORD dwFlags
    , LPADVISESINK pIAdviseSink, LPDWORD pdwConn)
    {
    HRESULT         hr;

    if (NULL==m_pObj->m_pIDataAdviseHolder)
        {
        hr=CreateDataAdviseHolder(&m_pObj->m_pIDataAdviseHolder);

        if (FAILED(hr))
            return ResultFromScode(E_OUTOFMEMORY);
        }

    hr=m_pObj->m_pIDataAdviseHolder->Advise(this, pFE
        , dwFlags, pIAdviseSink, pdwConn);

    return hr;
    }


STDMETHODIMP CImpIDataObject::DUnadvise(DWORD dwConn)
    {
    HRESULT         hr;

    if (NULL==m_pObj->m_pIDataAdviseHolder)
        return ResultFromScode(E_FAIL);

    hr=m_pObj->m_pIDataAdviseHolder->Unadvise(dwConn);

    return hr;
    }



STDMETHODIMP CImpIDataObject::EnumDAdvise(LPENUMSTATDATA *ppEnum)
    {
    HRESULT         hr;

    if (NULL==m_pObj->m_pIDataAdviseHolder)
        return ResultFromScode(E_FAIL);

    hr=m_pObj->m_pIDataAdviseHolder->EnumAdvise(ppEnum);
    return hr;
    }

//End CHAPTER19MOD

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品12区| 久久久久久久久久久99999| 日韩三区在线观看| 亚洲人成电影网站色mp4| 美国精品在线观看| 欧洲中文字幕精品| 国产人伦精品一区二区| 日韩电影一二三区| 在线国产亚洲欧美| 国产精品久久久久aaaa| 精品一区二区在线看| 在线91免费看| 夜夜嗨av一区二区三区四季av| 国产成人av影院| 精品久久国产97色综合| 无吗不卡中文字幕| 欧美性xxxxx极品少妇| 亚洲三级电影网站| 成人动漫中文字幕| 中文字幕在线不卡一区| 丁香一区二区三区| 久久久777精品电影网影网| 久久精品国产99国产| 日韩视频免费直播| 麻豆传媒一区二区三区| 欧美一卡二卡三卡| 美腿丝袜在线亚洲一区| 欧美视频一二三区| 天堂av在线一区| 欧美日韩一区高清| 调教+趴+乳夹+国产+精品| 欧美综合色免费| 丝袜亚洲精品中文字幕一区| 欧美人妇做爰xxxⅹ性高电影| 亚洲一区二区三区国产| 欧美日韩一区二区在线观看视频| 亚洲午夜三级在线| 欧美高清精品3d| 日韩不卡在线观看日韩不卡视频| 欧美一级国产精品| 国产一本一道久久香蕉| 亚洲国产成人一区二区三区| 成人av综合在线| 亚洲综合偷拍欧美一区色| 欧美四级电影在线观看| 青青草成人在线观看| 欧美大肚乱孕交hd孕妇| 国产成人综合亚洲网站| 一区在线观看免费| 欧美亚洲一区二区在线观看| 午夜国产不卡在线观看视频| 日韩一级免费观看| 高清成人免费视频| 一级女性全黄久久生活片免费| 欧美日韩激情一区二区三区| 另类的小说在线视频另类成人小视频在线| 日韩精品专区在线| 成人久久视频在线观看| 亚洲成av人综合在线观看| 欧美xxxxxxxxx| 99视频在线精品| 天堂精品中文字幕在线| 国产人妖乱国产精品人妖| 91黄色免费观看| 精彩视频一区二区| 最新国产成人在线观看| 日韩精品中午字幕| 99re这里都是精品| 蜜桃视频在线观看一区| 国产精品美女久久久久aⅴ| 欧美日韩电影一区| 成人精品国产福利| 久久国产人妖系列| 亚洲美女视频在线| 国产亚洲福利社区一区| 欧美日韩在线播放| jlzzjlzz国产精品久久| 日本欧美一区二区三区| 1区2区3区精品视频| 欧美成人午夜电影| 欧美日韩亚洲综合| 波多野结衣的一区二区三区| 日本欧美加勒比视频| 一区二区三区四区高清精品免费观看 | 国产成人亚洲精品青草天美| 亚洲曰韩产成在线| 国产视频视频一区| 日韩午夜在线观看视频| 色婷婷综合久久久久中文一区二区 | 欧美电视剧免费全集观看| 色天使久久综合网天天| 国产sm精品调教视频网站| 天天综合网 天天综合色| 一区二区三区日韩欧美| 欧美国产丝袜视频| 久久亚洲捆绑美女| 欧美一区二区三区视频| 欧美猛男gaygay网站| 91在线精品一区二区三区| 国产精品69久久久久水密桃| 日韩av一区二区三区四区| 一区二区不卡在线播放| 国产精品久久久久久久久搜平片| 久久在线观看免费| 日韩三级.com| 日韩区在线观看| 日韩午夜电影在线观看| 欧美日本免费一区二区三区| 色婷婷综合激情| 97久久超碰国产精品| 99精品视频一区二区三区| 成人黄色在线看| 成人中文字幕合集| 成人免费观看男女羞羞视频| 国产传媒日韩欧美成人| 国产精品888| 成人免费电影视频| 成人美女视频在线观看18| kk眼镜猥琐国模调教系列一区二区 | 欧美色图第一页| 欧美三片在线视频观看| 欧美日韩国产区一| 日韩一级片网址| 精品福利在线导航| 久久久av毛片精品| 中文字幕一区二区三区在线播放| 国产精品三级视频| 一区二区三区精密机械公司| 亚洲午夜免费福利视频| 亚洲图片欧美综合| 婷婷综合久久一区二区三区| 精品在线一区二区三区| 福利视频网站一区二区三区| 91网站最新地址| 欧美区视频在线观看| 日韩一区二区精品葵司在线| wwwwww.欧美系列| 中文字幕一区二区三中文字幕| 亚洲图片欧美一区| 黑人精品欧美一区二区蜜桃| 成人动漫在线一区| 欧美日韩一区二区不卡| 精品乱码亚洲一区二区不卡| 中文字幕一区av| 日韩精品国产欧美| 国产91精品一区二区| 欧洲精品一区二区三区在线观看| 91精品国产综合久久精品麻豆| 精品国产乱子伦一区| 综合欧美一区二区三区| 视频一区欧美精品| 成人的网站免费观看| 7777精品久久久大香线蕉| 欧美国产国产综合| 亚洲成人免费视| 波多野结衣一区二区三区| 欧美二区乱c少妇| 中文天堂在线一区| 丝袜美腿亚洲综合| eeuss鲁片一区二区三区在线看| 欧美日韩一区二区三区在线看| 久久久亚洲精品石原莉奈| 亚洲人成小说网站色在线| 麻豆视频一区二区| 91猫先生在线| 久久久精品日韩欧美| 亚洲成a人在线观看| 成人黄色小视频| 欧美一区二区播放| 亚洲尤物视频在线| 成人一区二区三区中文字幕| 91精品国产综合久久久久久| 国产精品二三区| 国产成人在线网站| 欧美一区二区美女| 亚洲码国产岛国毛片在线| 国产精品亚洲第一| 精品少妇一区二区三区免费观看 | 欧美激情艳妇裸体舞| 美腿丝袜在线亚洲一区| 欧美日韩国产综合视频在线观看| 中文字幕在线不卡一区| 国产精品一品二品| 精品久久久久久最新网址| 亚瑟在线精品视频| 色偷偷一区二区三区| 国产欧美精品一区aⅴ影院 | 久久免费看少妇高潮| 九九国产精品视频| 欧美大白屁股肥臀xxxxxx| 日韩中文欧美在线| 欧美日韩国产电影| 亚洲电影视频在线| 91久久奴性调教| 樱花影视一区二区| 在线视频中文字幕一区二区| 亚洲精品va在线观看| 99久久精品免费观看| 亚洲色图另类专区| 99在线精品观看|