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

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

?? figure.cpp

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


#include "cosmo.h"


/*
 * CFigure::CFigure
 * CFigure::~CFigure
 *
 * Parameters (Constructor):
 *  pfnDestroy      PFNDESTROYED to call when object is destroyed.
 *  pDoc            PCCosmoDoc we're associated with.
 */

CFigure::CFigure(PFNDESTROYED pfnDestroy, PCCosmoDoc pDoc)
    {
    m_cRef=0;
    m_pfnDestroy=pfnDestroy;

    m_pFR=NULL;     //We get this later through FrameSet.
    m_pDoc=pDoc;
    m_pPL=pDoc->m_pPL;

    m_fEmbedded=FALSE;

    //NULL any contained interfaces initially.
    m_pImpIPersistStorage=NULL;
    m_pIStorage=NULL;
    m_pIStream=NULL;
    m_pImpIDataObject=NULL;
    m_pIDataAdviseHolder=NULL;
    m_pImpIOleObject=NULL;
    m_pIOleAdviseHolder=NULL;
    m_pIOleClientSite=NULL;

    m_clsID=CLSID_CosmoFigure;
    m_cf=pDoc->m_cf;

    //These are for IDataObject::QueryGetData
    m_cfeGet=CFORMATETCGET;

    SETDefFormatEtc(m_rgfeGet[0], pDoc->m_cf, TYMED_HGLOBAL);
    SETDefFormatEtc(m_rgfeGet[1], pDoc->m_cfEmbedSource
        , TYMED_ISTORAGE);
    SETDefFormatEtc(m_rgfeGet[2], pDoc->m_cfObjectDescriptor
        , TYMED_HGLOBAL);
    SETDefFormatEtc(m_rgfeGet[3], CF_METAFILEPICT, TYMED_MFPICT);
    SETDefFormatEtc(m_rgfeGet[4], CF_BITMAP, TYMED_GDI);

    m_pST=NULL;

    m_pImpIPersistFile=NULL;

    //We live in the document's lifetime, so no need to AddRef here.
    m_pMoniker=m_pDoc->m_pMoniker;
    m_dwRegROT=0L;

    //CHAPTER23MOD
    m_pIOleIPSite=NULL;
    m_pIOleIPFrame=NULL;
    m_pIOleIPUIWindow=NULL;
    m_pImpIOleIPObject=NULL;
    m_pImpIOleIPActiveObject=NULL;
    m_hMenuShared=NULL;
    m_hOLEMenu=NULL;
    m_hAccel=NULL;
    m_pHW=NULL;
    m_pTB=NULL;
    m_cyBar=0;
    m_fUndoDeactivates=FALSE;
    m_fAllowInPlace=TRUE;
    m_fForceSave=FALSE;
    //End CHAPTER23MOD

    return;
    }


CFigure::~CFigure(void)
    {
    ReleaseInterface(m_pIOleClientSite);
    ReleaseInterface(m_pIDataAdviseHolder);
    ReleaseInterface(m_pIOleAdviseHolder);

    //CHAPTER23MOD
    if (NULL!=m_pHW)
        delete m_pHW;

    if (NULL!=m_pST)
        delete m_pST;

    /*
     * Free contained interfaces.
     * Container in-place interfaces released during deactivation.
     */

    if (NULL!=m_pTB)    //Safety-net
        delete m_pTB;

    DeleteInterfaceImp(m_pImpIOleIPObject);
    DeleteInterfaceImp(m_pImpIOleIPActiveObject);
    //End CHAPTER23MOD

    //Make sure no one thinks we're still running
    if (0L!=m_dwRegROT)
        INOLE_RevokeAsRunning(&m_dwRegROT);

    ReleaseInterface(m_pIStorage)
    ReleaseInterface(m_pIStream)

    DeleteInterfaceImp(m_pImpIPersistFile);
    DeleteInterfaceImp(m_pImpIOleObject)
    DeleteInterfaceImp(m_pImpIDataObject)
    DeleteInterfaceImp(m_pImpIPersistStorage);

    //Free strings.
    if (NULL!=m_pST)
        delete m_pST;

    return;
    }





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

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

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

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

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

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

    if (IID_IPersistFile==riid)
        *ppv=m_pImpIPersistFile;

    //CHAPTER23MOD
    if (IID_IOleWindow==riid || IID_IOleInPlaceObject==riid)
        *ppv=m_pImpIOleIPObject;
    //End CHAPTER23MOD

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

    return ResultFromScode(E_NOINTERFACE);
    }


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


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

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

    //Document deletes us
    return 0;
    }






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

BOOL CFigure::Init(void)
    {
    m_pST=new CStringTable(m_pDoc->m_hInst);

    if (NULL==m_pST)
        return FALSE;

    if (!m_pST->Init(IDS_FIGUREMIN, IDS_FIGUREMAX))
        return FALSE;

    //Allocate contained interfaces.
    m_pImpIPersistStorage=new CImpIPersistStorage(this, this);

    if (NULL==m_pImpIPersistStorage)
        return FALSE;

    m_pImpIDataObject=new CImpIDataObject(this, this);

    if (NULL==m_pImpIDataObject)
        return FALSE;

    m_pImpIOleObject=new CImpIOleObject(this, this);

    if (NULL==m_pImpIOleObject)
        return FALSE;

    m_pImpIPersistFile=new CImpIPersistFile(this, this);

    if (NULL==m_pImpIPersistFile)
        return FALSE;

    //CHAPTER23MOD
    m_pImpIOleIPObject=new CImpIOleInPlaceObject(this, this);

    if (NULL==m_pImpIOleIPObject)
        return FALSE;

    m_pImpIOleIPActiveObject=new CImpIOleInPlaceActiveObject(this
        , this);

    if (NULL==m_pImpIOleIPActiveObject)
        return FALSE;

    m_pHW=new CHatchWin(m_pDoc->m_hInst);

    if (NULL==m_pHW)
        return FALSE;

    //We don't have m_pFR yet from which to get the frame window.
    if (!m_pHW->Init(m_pDoc->Window(), ID_HATCHWINDOW, NULL))
        return FALSE;
    //End CHAPTER23MOD

    return TRUE;
    }



/*
 * CFigure::FrameSet
 *
 * Purpose:
 *  Provides the compound document object with access to the frame
 *  of this application for UI purposes.
 *
 * Parameters:
 *  pFR             PCCosmoFrame of the frame window.
 *
 * Return Value:
 *  None
 */

void CFigure::FrameSet(PCCosmoFrame pFR)
    {
    m_pFR=pFR;

    //CHAPTER23MOD
    //We need this in IOleInPlaceActiveObject::ResizeBorder
    m_cyBar=m_pFR->m_cyBar;

    //We need this in IOleInPlaceActiveObject::TranslateAccelerator
    m_hAccel=m_pFR->m_hAccel;
    //End CHAPTER23MOD
    return;
    }




/*
 * CFigure::FIsDirty
 *
 * Purpose:
 *  Checks if the document is dirty.  This can be called from
 *  IPersistStorage::IsDirty which doesn't have access to CCosmoDoc.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if dirty, FALSE if clean.
 */

BOOL CFigure::FIsDirty(void)
    {
    //CHAPTER23MOD
    //Force a save if we opened after being in-place.
    return m_pDoc->m_fDirty || m_fForceSave;
    //End CHAPTER23MOD
    }




/*
 * CFigure::FIsEmbedded
 *
 * Purpose:
 *  Answers if the object is embedded or not.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if the object is embedded, FALSE otherwise.
 */

BOOL CFigure::FIsEmbedded(void)
    {
    return m_fEmbedded;
    }




/*
 * CFigure::SendAdvise
 *
 * Purpose:
 *  Calls the appropriate IOleClientSite or IAdviseSink member
 *  function for various events such as closure, saving, etc.
 *
 * Parameters:
 *  uCode           UINT OBJECTCODE_* identifying the notification.
 *
 * Return Value:
 *  None
 */

void CFigure::SendAdvise(UINT uCode)
    {
    switch (uCode)
        {
        case OBJECTCODE_SAVED:
            if (NULL!=m_pIOleAdviseHolder)
                m_pIOleAdviseHolder->SendOnSave();

			break;

        case OBJECTCODE_CLOSED:
            if (NULL!=m_pIOleAdviseHolder)
                m_pIOleAdviseHolder->SendOnClose();

			break;

        case OBJECTCODE_RENAMED:
            m_pMoniker=m_pDoc->m_pMoniker;  //For IOleObject::GetMoniker
            m_dwRegROT=m_pDoc->m_dwRegROT;

            if (NULL!=m_pIOleAdviseHolder)
                m_pIOleAdviseHolder->SendOnRename(m_pMoniker);

            break;

        case OBJECTCODE_SAVEOBJECT:
            if (FIsDirty() && NULL!=m_pIOleClientSite)
                m_pIOleClientSite->SaveObject();

            break;

        case OBJECTCODE_DATACHANGED:
            //No flags are necessary here.
            if (NULL!=m_pIDataAdviseHolder)
                {
                m_pIDataAdviseHolder->SendOnDataChange
                    (m_pImpIDataObject, 0, 0);
                }

            //Tell the running object table of the change
            if (0!=m_dwRegROT)
                INOLE_NoteChangeTime(m_dwRegROT, NULL, NULL);

            //CHAPTER23MOD
            /*
             * If this is the first change after activation, tell the
             * container to free any undo information it's holding.
             */
            if (NULL!=m_pIOleIPSite && m_fUndoDeactivates)
                m_pIOleIPSite->DiscardUndoState();

            m_fUndoDeactivates=FALSE;
            //End CHAPTER23MOD

            break;

        case OBJECTCODE_SHOWWINDOW:
            if (NULL!=m_pIOleClientSite)
                m_pIOleClientSite->OnShowWindow(TRUE);

            break;

        case OBJECTCODE_HIDEWINDOW:
            if (NULL!=m_pIOleClientSite)
                m_pIOleClientSite->OnShowWindow(FALSE);

            break;

        case OBJECTCODE_SHOWOBJECT:
            if (NULL!=m_pIOleClientSite)
                m_pIOleClientSite->ShowObject();

            break;
        }

    return;
    }




//CHAPTER23MOD
/*
 * CFigure::InPlaceActivate
 *
 * Purpose:
 *  Goes through all the steps of activating the Figure as an
 *  in-place object.
 *
 * Parameters:
 *  pActiveSite     LPOLECLIENTSITE of the active site we show in.
 *  fIncludeUI      BOOL indicating if we should do UI as well.
 *
 * Return Value:
 *  HRESULT         Whatever error code is appropriate.
 */

HRESULT CFigure::InPlaceActivate(LPOLECLIENTSITE pActiveSite
    , BOOL fIncludeUI)
    {
    HRESULT                 hr;
    HWND                    hWnd, hWndHW;
    RECT                    rcPos;
    RECT                    rcClip;

    if (NULL==pActiveSite)
        return ResultFromScode(E_INVALIDARG);

    //If we're already active, do the UI and we're done.
    if (NULL!=m_pIOleIPSite)
        {
        if (fIncludeUI)
            UIActivate();

        return NOERROR;
        }

    /*
     * 1.  Initialization, obtaining interfaces, calling
     *     OnInPlaceActivate.
     */
    hr=pActiveSite->QueryInterface(IID_IOleInPlaceSite
        , (PPVOID)&m_pIOleIPSite);

    if (FAILED(hr))
        return hr;

    hr=m_pIOleIPSite->CanInPlaceActivate();

    if (NOERROR!=hr)
        {
        m_pIOleIPSite->Release();
        m_pIOleIPSite=NULL;
        return ResultFromScode(E_FAIL);
        }

    m_pIOleIPSite->OnInPlaceActivate();
    m_fUndoDeactivates=TRUE;

    /*
     * 2.  Get the window context and create a window or change the
     *     parent and position of an existing window.  Servers are
     *     required to full cb in the OLEINPLACEFRAMEINFO structure.
     */
    m_pIOleIPSite->GetWindow(&hWnd);
    m_pFR->m_frameInfo.cb=sizeof(OLEINPLACEFRAMEINFO);

    m_pIOleIPSite->GetWindowContext(&m_pIOleIPFrame
        , &m_pIOleIPUIWindow, &rcPos, &rcClip
        , &m_pFR->m_frameInfo);

    /*
     * Copy container frame pointer to CCosmoFrame for accelerators.
     * No AddRef because frame never messes with it.  Note also that
     * we don't do anything special with our own accelerators here
     * because we just use the same ones as always.
     */
    m_pFR->m_pIOleIPFrame=m_pIOleIPFrame;

    /*
     * We'll use a hatch window as the child of the container and the
     * editing window as a child of the hatch window.  We already
     * created the hatch window, so now all we have to do is put it
     * in the right place and stick the Polyline in it.
     */

    m_pHW->HwndAssociateSet(m_pFR->Window());

    m_pHW->ChildSet(m_pPL->Window());   //Calls SetParent
    m_pHW->RectsSet(&rcPos, &rcClip);   //Positions polyline

    hWndHW=m_pHW->Window();
    SetParent(hWndHW, hWnd);            //Move the hatch window
    ShowWindow(hWndHW, SW_SHOW);        //Make us visible.
    SendAdvise(OBJECTCODE_SHOWOBJECT);

    if (fIncludeUI)
        return UIActivate();

    return NOERROR;
    }




/*
 * CFigure::InPlaceDeactivate
 *
 * Purpose:
 *  Reverses all the activation steps from InPlaceActivate.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  None
 */

void CFigure::InPlaceDeactivate(void)
    {
    RECT        rc;

    UIDeactivate();

    /*
     * When setting the parent back to the normal document,
     * reposition the Polyline to be at (8,8) instead of at wherever
     * it was in the container's window or our hatch window.  This
     * is so if we are deactivating to open in our own window the
     * Polyline appears in the proper place in the document window.
     */

    SetParent(m_pPL->Window(), m_pDoc->m_hWnd);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区不卡视频| 欧美激情一二三区| 国产精品久久夜| 日韩福利视频导航| www.欧美亚洲| 精品国产乱码久久久久久牛牛| 中文字幕精品—区二区四季| 亚洲视频一区二区在线观看| 久久男人中文字幕资源站| 中文字幕巨乱亚洲| 婷婷中文字幕综合| 91一区二区在线观看| 久久毛片高清国产| 另类小说综合欧美亚洲| 欧美日韩亚洲国产综合| 亚洲免费观看视频| 91麻豆免费看| 国产精品久久久久天堂| 高清视频一区二区| 久久久国产综合精品女国产盗摄| 成人18精品视频| 国产午夜精品福利| 最好看的中文字幕久久| 国产精品一卡二卡在线观看| 日韩欧美一区二区免费| 日韩成人一级片| 欧美日韩久久一区二区| 亚洲一区二区高清| 欧美日精品一区视频| 亚洲一二三四在线| 欧美调教femdomvk| 亚洲午夜一区二区| 欧美日韩国产小视频| 午夜亚洲国产au精品一区二区| 日本伦理一区二区| 一区二区三区久久久| 欧美综合亚洲图片综合区| 美腿丝袜亚洲综合| 国产乱人伦偷精品视频免下载| 久久er精品视频| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲一二三区在线观看| 欧美r级在线观看| 日韩一区二区三区电影在线观看| 99视频精品在线| 欧美色偷偷大香| 国产精品一区专区| 欧美在线观看视频一区二区| 日本一区二区三区dvd视频在线 | 亚洲柠檬福利资源导航| 久久精品噜噜噜成人av农村| 国产99久久精品| 在线精品视频免费播放| 欧美成人性战久久| 一区二区三区加勒比av| 国产91丝袜在线播放| 欧美日韩和欧美的一区二区| 国产午夜亚洲精品理论片色戒| 国产精品高潮呻吟| 国产成a人亚洲精品| 91尤物视频在线观看| 7777精品伊人久久久大香线蕉经典版下载| 成人精品电影在线观看| 激情综合网天天干| 日本欧洲一区二区| 粉嫩av一区二区三区粉嫩| 91麻豆福利精品推荐| 国产精品99久久久久久久vr| 国产在线精品免费av| 国产麻豆9l精品三级站| av一区二区久久| a在线欧美一区| 国产一区视频在线看| 亚洲精品一区二区三区香蕉| 久久亚洲一区二区三区明星换脸 | 国产精品一区二区在线播放 | 久久久久久久av麻豆果冻| 91麻豆swag| 日韩欧美美女一区二区三区| 亚洲高清一区二区三区| 91视频免费播放| 国产日韩亚洲欧美综合| 麻豆成人综合网| 日韩欧美一二三四区| 免费成人美女在线观看.| 精品国产乱码久久久久久图片| 日韩精品电影在线| 久久久久久久综合狠狠综合| 国产乱码精品一区二区三| 亚洲人一二三区| 日韩午夜激情视频| 成人h版在线观看| 男人的天堂久久精品| 欧美精选在线播放| 国产在线观看免费一区| 亚洲人成7777| 久久精品亚洲麻豆av一区二区 | 亚洲国产成人午夜在线一区| 欧美色倩网站大全免费| 国产寡妇亲子伦一区二区| 亚洲国产婷婷综合在线精品| 日本一区二区三区电影| 欧美一级欧美一级在线播放| av中文字幕在线不卡| 国产精品一区二区x88av| 亚洲国产日韩一区二区| 亚洲精品水蜜桃| 亚洲视频精选在线| 国产精品国产精品国产专区不蜜| 精品国产乱码久久久久久1区2区 | 国产一区二区三区av电影 | 亚洲精品一二三| 自拍视频在线观看一区二区| 久久久99精品久久| 亚洲精品一区二区三区四区高清 | 欧美精品国产精品| 欧美一级专区免费大片| 欧美精品第一页| 欧美成人video| 久久美女高清视频| 中文字幕巨乱亚洲| 一区二区不卡在线播放| 亚洲高清免费视频| 精品一区二区久久久| 国产成人亚洲综合a∨猫咪| 99久久er热在这里只有精品66| 盗摄精品av一区二区三区| 99国产精品久久| 91精品啪在线观看国产60岁| 欧美一区二区黄色| 日本一区二区三区国色天香 | 欧美性色综合网| 欧美大片在线观看一区二区| 国产欧美精品一区| 亚洲色欲色欲www在线观看| 一区二区三区四区国产精品| 日本va欧美va瓶| 91麻豆精品一区二区三区| 欧美一级片在线| 亚洲最大成人综合| 国产黄人亚洲片| 精品伦理精品一区| 亚洲黄色av一区| 成人伦理片在线| 久久精品亚洲国产奇米99| 秋霞成人午夜伦在线观看| 一本到不卡精品视频在线观看| 欧美mv和日韩mv国产网站| 五月婷婷色综合| 一本色道亚洲精品aⅴ| 国产精品系列在线| 韩国女主播成人在线| 欧美精品在线一区二区三区| 尤物视频一区二区| 欧美在线一区二区| 亚洲资源中文字幕| 欧美日韩亚洲综合在线| 亚洲精品视频自拍| 欧美最猛性xxxxx直播| 尤物视频一区二区| 欧美日韩精品一区二区天天拍小说 | 免费在线观看成人| 91精品一区二区三区在线观看| 亚洲成人资源在线| 欧美不卡在线视频| 国产69精品久久99不卡| 中文字幕亚洲一区二区va在线| 国产激情视频一区二区三区欧美| 91精品国产综合久久精品性色| 日本中文字幕一区二区有限公司| 欧美一区二区在线看| 激情综合网激情| 一区二区三区日韩欧美| 91麻豆精品国产自产在线观看一区| 日韩电影在线一区二区| 国产色综合一区| 欧美日韩在线三级| 国产成人一区二区精品非洲| 18成人在线观看| 日韩久久久久久| 99re这里都是精品| 另类欧美日韩国产在线| 亚洲视频一区二区在线| 日韩一区二区免费电影| 91亚洲午夜精品久久久久久| 蜜桃在线一区二区三区| 亚洲综合一区二区| 国产精品美日韩| 欧美一区二区三区四区高清| 在线中文字幕一区二区| 成人性生交大片免费看中文 | 中文字幕av一区二区三区| 欧美一区二区久久久| 欧美一区二区黄| 欧美一区二区三区在线观看| 在线亚洲一区二区| 91在线视频免费观看| 波波电影院一区二区三区| 国产高清一区日本| 国产福利一区在线|