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

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

?? ioleobj.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
 * IOLEOBJ.CPP
 * Cosmo Chapter 18
 *
 * 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)
    {
    //Uninteresting for embeddings only.
    return ResultFromScode(E_NOTIMPL);
    }





/*
 * 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)
    {
    //Uninteresting for embeddings only.
    return ResultFromScode(E_NOTIMPL);
    }





/*
 * 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.
 *  pRectPos        LPRECT of the object in hWndParent where the
 *                  object can play in-place if desired.
 *
 * Return Value:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜激情片| 亚洲国产高清在线观看视频| 欧美日韩免费一区二区三区| 在线视频综合导航| 日本高清不卡视频| 欧美浪妇xxxx高跟鞋交| 在线播放欧美女士性生活| 欧美丰满少妇xxxxx高潮对白| 欧美在线一二三| 欧美日韩aaa| 欧美一区二区三区视频在线观看| 欧美一区二区网站| 精品福利一区二区三区免费视频| 精品国产区一区| 国产片一区二区| 亚洲日本va午夜在线电影| 亚洲综合激情网| 日本不卡中文字幕| 狠狠色丁香九九婷婷综合五月| 国产成人在线视频免费播放| caoporn国产一区二区| 91偷拍与自偷拍精品| 欧美日韩视频在线一区二区| 日韩欧美一卡二卡| 中文字幕高清一区| 一区二区三区鲁丝不卡| 日韩国产精品大片| 国产激情91久久精品导航| 91美女片黄在线观看91美女| 欧美精品一卡二卡| 国产日产欧美一区| 一区二区三区精品视频| 秋霞成人午夜伦在线观看| 国产精品综合一区二区| 色婷婷综合久久| 欧美xxxxxxxx| 亚洲视频一区二区在线| 午夜在线电影亚洲一区| 国产精品亚洲第一| 色哟哟一区二区| 日韩欧美中文字幕精品| 日韩一区欧美小说| 奇米影视7777精品一区二区| 成人久久18免费网站麻豆| 欧美三级日本三级少妇99| 精品成人私密视频| 一区二区三区中文字幕在线观看| 久久99国产精品尤物| 91色在线porny| 日韩精品一区二区三区视频播放 | 日本不卡123| 粉嫩av一区二区三区在线播放| 欧美在线不卡视频| 欧美高清在线一区二区| 天天色图综合网| www.一区二区| 精品少妇一区二区三区在线视频| 亚洲精品日产精品乱码不卡| 狠狠色丁香久久婷婷综合丁香| 在线观看中文字幕不卡| 国产午夜亚洲精品不卡| 日韩不卡一区二区| 色一情一乱一乱一91av| 2023国产一二三区日本精品2022| 亚洲影院在线观看| bt欧美亚洲午夜电影天堂| 欧美xingq一区二区| 亚洲成人av中文| 97精品久久久午夜一区二区三区| 2021国产精品久久精品| 日本欧美久久久久免费播放网| 在线免费观看日韩欧美| 欧美激情一区二区三区在线| 久久se精品一区二区| 欧美精品乱人伦久久久久久| 亚洲色图一区二区三区| 国产成人在线网站| 久久亚洲精华国产精华液 | 成人动漫精品一区二区| 日韩三级视频在线观看| 亚洲午夜视频在线| 9人人澡人人爽人人精品| 国产校园另类小说区| 蜜桃av一区二区在线观看| 欧美日韩激情在线| 亚洲一区二区三区国产| 一本大道久久精品懂色aⅴ| 国产精品美女久久久久久2018| 国产一区二区三区免费观看| 精品欧美一区二区在线观看| 日本欧美一区二区在线观看| 在线播放视频一区| 日韩高清中文字幕一区| 91精品婷婷国产综合久久竹菊| 亚洲国产精品人人做人人爽| 欧美亚洲国产一区二区三区va | 国产欧美一区二区精品性色超碰| 老司机免费视频一区二区| 91精品国产综合久久小美女| 天天色天天操综合| 欧美一级艳片视频免费观看| 日韩在线一区二区三区| 日韩一区和二区| 免费成人av在线| 日韩欧美不卡在线观看视频| 精品一区在线看| 久久久久久久久99精品| 丰满少妇在线播放bd日韩电影| 亚洲精品国产精华液| av不卡免费在线观看| 亚洲人妖av一区二区| 在线视频你懂得一区二区三区| 一区二区在线免费| 欧美日韩一区在线观看| 亚洲成人777| 日韩欧美高清dvd碟片| 国产伦精品一区二区三区免费迷 | 中文文精品字幕一区二区| 成人网页在线观看| 综合中文字幕亚洲| 欧美人伦禁忌dvd放荡欲情| 日韩成人一级大片| 久久综合九色综合97婷婷| 国产成人午夜精品影院观看视频 | 久久久一区二区三区| jiyouzz国产精品久久| 一区二区三区中文字幕精品精品 | 91麻豆产精品久久久久久| 一区二区在线观看免费视频播放| 欧美色图一区二区三区| 麻豆一区二区在线| 国产精品九色蝌蚪自拍| 欧美日韩免费高清一区色橹橹| 久久99久久精品| 亚洲欧美中日韩| 欧美一区二区视频观看视频| 国产河南妇女毛片精品久久久 | 不卡视频一二三四| 亚洲国产综合色| 精品国内二区三区| 99精品欧美一区二区三区小说| 偷拍日韩校园综合在线| 国产日韩欧美a| 欧美剧情片在线观看| 国产一区91精品张津瑜| 亚洲自拍欧美精品| 久久先锋影音av鲁色资源| 在线看日韩精品电影| 久久99国产精品久久99| 亚洲日本丝袜连裤袜办公室| 日韩精品一区在线| 91免费视频观看| 精品一区二区三区欧美| 亚洲综合久久av| 国产欧美1区2区3区| 6080yy午夜一二三区久久| av电影在线观看一区| 奇米色777欧美一区二区| 综合av第一页| 精品成a人在线观看| 欧美无乱码久久久免费午夜一区 | 精品久久久久久无| 在线免费观看视频一区| 国产高清在线观看免费不卡| 五月天中文字幕一区二区| 中日韩免费视频中文字幕| 日韩视频永久免费| 99久久精品免费精品国产| 另类成人小视频在线| 亚洲综合在线观看视频| 国产精品久久久久天堂| 精品国产91乱码一区二区三区| 欧美在线免费视屏| www.亚洲人| 国产在线精品免费av| 日韩电影在线看| 亚洲一区二区三区四区中文字幕| 国产精品水嫩水嫩| 久久综合久久综合亚洲| 日韩欧美综合一区| 777色狠狠一区二区三区| 91国偷自产一区二区三区观看| 国产成人亚洲综合a∨婷婷图片| 美国av一区二区| 天堂在线亚洲视频| 亚洲一卡二卡三卡四卡无卡久久| 中文字幕在线不卡视频| 国产欧美日韩综合| 久久久综合视频| 久久先锋影音av| 久久天天做天天爱综合色| 日韩免费高清av| 日韩欧美高清在线| 日韩精品一区二区三区三区免费| 欧美一区二区三区小说| 欧美日韩一区二区不卡| 欧美日韩在线直播| 欧美日韩的一区二区| 欧美日韩国产另类一区| 777精品伊人久久久久大香线蕉|