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

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

?? ioleobj.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
 * IOLEOBJ.CPP
 * Cosmo Chapter 23
 *
 * Implementation of the IOleObject interface for Polyline.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "cosmo.h"


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

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

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



/*
 * CImpIOleObject::QueryInterface
 * CImpIOleObject::AddRef
 * CImpIOleObject::Release
 */

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

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

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





/*
 * CImpIOleObject::SetClientSite
 *
 * Purpose:
 *  Provides the object with a pointer to the IOleClient site
 *  representing the container in which this object resides.
 *
 * Parameters:
 *  pIOleClientSite LPOLECLIENTSITE to the container's interface.
 *
 * Return Value:
 *  HRESULT         NOERROR
 */

STDMETHODIMP CImpIOleObject::SetClientSite
    (LPOLECLIENTSITE pIOleClientSite)
    {
    if (NULL!=m_pObj->m_pIOleClientSite)
        m_pObj->m_pIOleClientSite->Release();

    m_pObj->m_pIOleClientSite=pIOleClientSite;
    m_pObj->m_pIOleClientSite->AddRef();
    return NOERROR;
    }





/*
 * CImpIOleObject::GetClientSite
 *
 * Purpose:
 *  Asks the object for the client site provided in SetClientSite.
 *  If you have not seen SetClientSite yet, return a NULL in
 *  ppIOleClientSite.
 *
 * Parameters:
 *  ppSite          LPOLECLIENTSITE * in which to store the
 *                  pointer.
 *
 * Return Value:
 *  HRESULT         NOERROR
 */

STDMETHODIMP CImpIOleObject::GetClientSite(LPOLECLIENTSITE
    *ppSite)
    {
    //Be sure to AddRef the new pointer you are giving away.
    *ppSite=m_pObj->m_pIOleClientSite;
    m_pObj->m_pIOleClientSite->AddRef();

    return NOERROR;
    }





/*
 * CImpIOleObject::SetHostNames
 *
 * Purpose:
 *  Provides the object with names of the container application and
 *  the object in the container to use in object user interface.
 *
 * Parameters:
 *  pszApp          LPCOLESTR of the container application.
 *  pszObj          LPCOLESTR of some name useful in window titles.
 *
 * Return Value:
 *  HRESULT         NOERROR
 */

STDMETHODIMP CImpIOleObject::SetHostNames(LPCOLESTR pszApp
    , LPCOLESTR pszObj)
    {
    m_pObj->m_fEmbedded=TRUE;
   #ifdef WIN32ANSI
    char        szApp[80], szObj[80];

    szApp[0]=0;
    szObj[0]=0;

    if (NULL!=pszApp)
        {
        WideCharToMultiByte(CP_ACP, 0, pszApp, -1, szApp, 80
            , NULL, NULL);
        }

    if (NULL!=pszObj)
        {
        WideCharToMultiByte(CP_ACP, 0, pszObj, -1, szObj, 80
            , NULL, NULL);
        }

    m_pObj->m_pFR->UpdateEmbeddingUI(TRUE, m_pObj->m_pDoc
        , szApp, szObj);
   #else
    m_pObj->m_pFR->UpdateEmbeddingUI(TRUE, m_pObj->m_pDoc
        , pszApp, pszObj);
   #endif
    return NOERROR;
    }






/*
 * CImpIOleObject::Close
 *
 * Purpose:
 *  Forces the object to close down its user interface and unload.
 *
 * Parameters:
 *  dwSaveOption    DWORD describing the circumstances under which
 *                  the object is being saved and closed.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIOleObject::Close(DWORD dwSaveOption)
    {
    HWND        hWnd;
    BOOL        fSave=FALSE;

    hWnd=m_pObj->m_pDoc->Window();

    //If object is dirty and we're asked to save, save it and close.
    if (OLECLOSE_SAVEIFDIRTY==dwSaveOption && m_pObj->FIsDirty())
        fSave=TRUE;

    /*
     * If asked to prompt, only do so if dirty, then if we get a
     * YES, save as usual and close.  On NO, just close.  On
     * CANCEL return OLE_E_PROMPTSAVECANCELLED.
     */
    if (OLECLOSE_PROMPTSAVE==dwSaveOption && m_pObj->FIsDirty())
        {
        UINT        uRet;

        uRet=MessageBox(hWnd, (*m_pObj->m_pST)[IDS_CLOSECAPTION]
            , (*m_pObj->m_pST)[IDS_CLOSEPROMPT], MB_YESNOCANCEL);

        if (IDCANCEL==uRet)
            return ResultFromScode(OLE_E_PROMPTSAVECANCELLED);

        if (IDYES==uRet)
            fSave=TRUE;
        }

    if (fSave)
        {
        m_pObj->SendAdvise(OBJECTCODE_SAVEOBJECT);
        m_pObj->SendAdvise(OBJECTCODE_SAVED);
        }

    //We get directly here on OLECLOSE_NOSAVE.
    PostMessage(hWnd, WM_CLOSE, 0, 0L);
    return NOERROR;
    }





/*
 * CImpIOleObject::SetMoniker
 *
 * Purpose:
 *  Informs the object of its moniker or its container's moniker
 *  depending on dwWhich.
 *
 * Parameters:
 *  dwWhich         DWORD describing whether the moniker is the
 *                  object's or the container's.
 *  pmk             LPMONIKER with the name.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIOleObject::SetMoniker(DWORD dwWhich
    , LPMONIKER pmk)
    {
    LPMONIKER       pmkFull;
    HRESULT         hr=ResultFromScode(E_FAIL);

    /*
     * For an embedded object we might be living in a container that
     * has given us away as a link.  This is our indication to
     * register the full moniker for this object that we obtain from
     * IOleClientSite::GetMoniker(OLEWHICHMK_FULL).
     */

    if (NULL!=m_pObj->m_pIOleClientSite)
        {
        hr=m_pObj->m_pIOleClientSite->GetMoniker
            (OLEGETMONIKER_ONLYIFTHERE, OLEWHICHMK_OBJFULL
            , &pmkFull);
        }

    if (SUCCEEDED(hr))
        {
        /*
         * If this moniker is already running then we don't
         * need to revoke and re-register the same thing again.
         */
        if (NOERROR==pmkFull->IsRunning(NULL, NULL, NULL))
            {
            pmkFull->Release();
            return NOERROR;
            }

        //This will revoke the old one if m_dwRegROT is nonzero.
        INOLE_RegisterAsRunning(m_pObj, pmkFull
            , 0, &m_pObj->m_dwRegROT);

        //Inform clients of the new moniker
        if (NULL!=m_pObj->m_pIOleAdviseHolder)
            m_pObj->m_pIOleAdviseHolder->SendOnRename(pmkFull);

        pmkFull->Release();
        }

    return hr;
    }





/*
 * CImpIOleObject::GetMoniker
 *
 * Purpose:
 *  Asks the object for a moniker that can later be used to
 *  reconnect to it.
 *
 * Parameters:
 *  dwAssign        DWORD determining how to assign the moniker to
 *                  to the object.
 *  dwWhich         DWORD describing which moniker the caller wants.
 *  ppmk            LPMONIKER * into which to store the moniker.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIOleObject::GetMoniker(DWORD dwAssign
    , DWORD dwWhich, LPMONIKER * ppmk)
    {
    HRESULT         hr=ResultFromScode(E_FAIL);

    *ppmk=NULL;

    /*
     * When we support linking we either return our file moniker if
     * we're linked, or out full moniker from the container if we're
     * embedded.
     */

    if (NULL!=m_pObj->m_pMoniker)
        {
        *ppmk=m_pObj->m_pMoniker;       //Document file moniker
        m_pObj->m_pMoniker->AddRef();
        }
    else
        {
        //Get the full container:object moniker if we're embedded
        if (NULL!=m_pObj->m_pIOleClientSite)
            {
            hr=m_pObj->m_pIOleClientSite->GetMoniker
                (OLEGETMONIKER_ONLYIFTHERE, OLEWHICHMK_OBJFULL
                , ppmk);
            }
        }

    return (NULL!=*ppmk) ? NOERROR : hr;
    }





/*
 * CImpIOleObject::InitFromData
 *
 * Purpose:
 *  Initializes the object from the contents of a data object.
 *
 * Parameters:
 *  pIDataObject    LPDATAOBJECT containing the data.
 *  fCreation       BOOL indicating if this is part of a new
 *                  creation. If FALSE, the container is trying
 *                  to paste here.
 *  dwReserved      DWORD reserved.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIOleObject::InitFromData(LPDATAOBJECT pIDataObject
    , BOOL fCreation, DWORD dwReserved)
    {
    BOOL    fRet;

    /*
     * If we get a data object here, try to paste from it.  If
     * you've written clipboard code already, this is a snap.
     * We don't really care about fCreation or not since pasting
     * in us blasts away whatever is already here.
     */
    fRet=m_pObj->m_pDoc->PasteFromData(pIDataObject);
    return fRet ? NOERROR : ResultFromScode(E_FAIL);
    }





/*
 * CImpIOleObject::GetClipboardData
 *
 * Purpose:
 *  Returns an IDataObject pointer to the caller representing what
 *  would be on the clipboard if the server did an Edit/Copy using
 *  OleSetClipboard.
 *
 * Parameters:
 *  dwReserved      DWORD reserved.
 *  ppIDataObj      LPDATAOBJECT * into which to store the
 *                  pointer.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error value.
 */

STDMETHODIMP CImpIOleObject::GetClipboardData(DWORD dwReserved
    , LPDATAOBJECT *ppIDataObj)
    {
    /*
     * Again, if you have a function to create a data object for the
     * clipboard, this is a simple implementation.  The one we have
     * does all the compound document formats already.
     */
    *ppIDataObj=m_pObj->m_pDoc->TransferObjectCreate(FALSE);
    return (NULL!=*ppIDataObj) ? NOERROR : ResultFromScode(E_FAIL);
    }





/*
 * CImpIOleObject::DoVerb
 *
 * Purpose:
 *  Executes an object-defined action.
 *
 * Parameters:
 *  iVerb           LONG index of the verb to execute.
 *  pMSG            LPMSG describing the event causing the
 *                  activation.
 *  pActiveSite     LPOLECLIENTSITE to the site involved.
 *  lIndex          LONG the piece on which execution is happening.
 *  hWndParent      HWND of window in which the object can play
 *                  in-place.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一区在线| 亚洲视频中文字幕| 91视频在线看| 激情伊人五月天久久综合| 亚洲乱码国产乱码精品精可以看| 日韩一级片网站| 欧美在线观看视频一区二区三区| 国产一区二区三区综合| 亚洲国产成人av| 亚洲人精品午夜| 国产日韩精品一区| 日韩免费高清视频| 欧美日韩美女一区二区| 91视视频在线观看入口直接观看www| 久久se这里有精品| 日韩福利视频网| 亚洲gay无套男同| 亚洲欧美成aⅴ人在线观看| 日本一区二区三区四区| 2021国产精品久久精品| 欧美一区二区三区免费大片| 日本高清免费不卡视频| 99re视频这里只有精品| 不卡的电视剧免费网站有什么| 久久疯狂做爰流白浆xx| 日韩电影在线免费看| 一区二区三区影院| 亚洲视频在线一区二区| 成人免费小视频| 欧美经典三级视频一区二区三区| 精品国产成人在线影院| 日韩欧美国产一二三区| 日韩视频免费观看高清完整版在线观看| 欧美三电影在线| 日韩欧美一区二区不卡| 欧美疯狂做受xxxx富婆| 555夜色666亚洲国产免| 制服视频三区第一页精品| 欧美日本一道本在线视频| 欧美日韩亚州综合| 777a∨成人精品桃花网| 欧美一级一区二区| 亚洲精品在线免费播放| 久久久久久久久久久黄色| 国产午夜一区二区三区| 国产亚洲欧美激情| 欧美韩国日本一区| 亚洲精品国产高清久久伦理二区| 亚洲乱码一区二区三区在线观看| 亚洲自拍偷拍麻豆| 日日夜夜精品视频免费| 奇米色一区二区三区四区| 极品少妇一区二区| 成人免费看黄yyy456| 91网站最新地址| 欧美日韩亚洲综合一区二区三区 | 欧美亚一区二区| 欧美日韩国产bt| 日韩欧美国产成人一区二区| 久久精品一区二区三区av| 国产精品拍天天在线| 亚洲制服丝袜av| 久久超级碰视频| 99久久99久久精品免费观看| 欧美午夜在线观看| 欧美r级电影在线观看| 久久精品视频一区二区| 一区二区三区四区乱视频| 日韩电影在线一区二区三区| 国产成人夜色高潮福利影视| 91免费版在线| 精品人伦一区二区色婷婷| 中文字幕在线不卡| 婷婷久久综合九色综合绿巨人 | 色噜噜狠狠色综合中国| 4hu四虎永久在线影院成人| 国产区在线观看成人精品| 亚洲欧美日韩电影| 理论片日本一区| 99re66热这里只有精品3直播| 欧美妇女性影城| 中文字幕一区在线| 秋霞国产午夜精品免费视频| www.色综合.com| 日韩欧美一区二区在线视频| 国产精品理论片| 奇米四色…亚洲| 91极品美女在线| 欧美精品一区二区三区蜜桃| 亚洲乱码一区二区三区在线观看| 麻豆国产精品官网| 欧洲在线/亚洲| 国产精品美女久久久久高潮| 日日摸夜夜添夜夜添亚洲女人| 国产99精品国产| 日韩一级完整毛片| 亚洲一区在线观看视频| 豆国产96在线|亚洲| 国产精品免费久久久久| 日韩国产一二三区| 91亚洲大成网污www| 久久久国产精品午夜一区ai换脸| 亚洲成人综合网站| 91美女福利视频| 国产亚洲一区字幕| 日本91福利区| 欧美色图激情小说| 亚洲免费在线观看视频| 国产suv精品一区二区6| 日韩欧美国产高清| 青青草成人在线观看| 在线免费观看日韩欧美| 国产精品免费视频观看| 国产激情视频一区二区三区欧美 | 欧美日韩在线播放三区四区| 国产精品免费免费| 国产iv一区二区三区| 日韩色视频在线观看| 亚洲超丰满肉感bbw| 欧美四级电影网| 一区二区三区久久久| 99久久婷婷国产| 国产精品青草综合久久久久99| 国产一区二区福利| 久久久久国产精品麻豆ai换脸| 六月婷婷色综合| 日韩西西人体444www| 青青草成人在线观看| 日韩片之四级片| 美女在线视频一区| 欧美成人一级视频| 国产呦精品一区二区三区网站| 精品国产乱码91久久久久久网站| 久久国产福利国产秒拍| 精品国产区一区| 国产乱子伦视频一区二区三区 | 91免费在线看| 亚洲一区二区三区激情| 欧美影视一区二区三区| 亚洲国产人成综合网站| 欧美精品一二三| 免费成人在线观看| 久久在线观看免费| 国产成人午夜精品5599| 国产精品成人一区二区艾草| 色综合中文字幕国产 | 国产午夜亚洲精品羞羞网站| 国产乱子伦视频一区二区三区| 国产亲近乱来精品视频 | 在线观看视频一区二区| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩国产中文| 韩日欧美一区二区三区| 国产精品的网站| 欧美日韩另类国产亚洲欧美一级| 日韩avvvv在线播放| 精品免费视频一区二区| 菠萝蜜视频在线观看一区| 亚洲另类在线一区| 7777精品伊人久久久大香线蕉经典版下载 | 久久精品国产精品亚洲精品| 国产亚洲视频系列| 91麻豆自制传媒国产之光| 性欧美疯狂xxxxbbbb| 欧美成人国产一区二区| 成人性生交大片| 午夜国产不卡在线观看视频| 精品伦理精品一区| 色综合久久综合网欧美综合网| 亚洲成人三级小说| 国产日韩高清在线| 欧洲精品一区二区| 国产一区二区在线观看免费| 亚洲欧美精品午睡沙发| 欧美大白屁股肥臀xxxxxx| 99久久精品国产毛片| 热久久久久久久| 成人免费小视频| 精品国产乱码久久久久久久久| 91浏览器在线视频| 极品瑜伽女神91| 亚洲成人自拍一区| 国产精品日产欧美久久久久| 777色狠狠一区二区三区| caoporm超碰国产精品| 蜜臀久久99精品久久久久久9| 天堂一区二区在线免费观看| 国产精品欧美极品| 91麻豆精品国产91久久久资源速度 | 亚洲高清视频的网址| 国产欧美精品一区aⅴ影院| 777奇米四色成人影色区| 91在线你懂得| 国产麻豆9l精品三级站| 午夜在线电影亚洲一区| 日韩理论片一区二区| 久久久久久一级片| 日韩欧美国产系列| 欧美日韩一区二区三区视频| 91视频免费观看|