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

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

?? polyline.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
 * CPolyline::RenderNative
 *
 * Purpose:
 *  Retrieves the Polyline's data in a global memory handle.
 *
 * Parameters:
 *  phMem           HGLOBAL * in which to store the handle.
 *
 * Return Value:
 *  HRESULT         NOERROR if successful, otherwise a
 *                  POLYLINE_E_ value.
 */

STDMETHODIMP CPolyline::RenderNative(HGLOBAL *phMem)
    {
    HGLOBAL         hMem;
    PPOLYLINEDATA   ppl;
    HRESULT         hr=ResultFromScode(POLYLINE_E_INVALIDPOINTER);

    if (NULL==phMem)
        return ResultFromScode(POLYLINE_E_INVALIDPOINTER);

    hMem=GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, CBPOLYLINEDATA);

    if (NULL!=hMem)
        {
        ppl=(PPOLYLINEDATA)GlobalLock(hMem);
        hr=DataGet(ppl);

        GlobalUnlock(hMem);

        if (FAILED(hr))
            {
            GlobalFree(hMem);
            hMem=NULL;
            }
        }

    *phMem=hMem;
    return hr;
    }




/*
 * CPolyline::RenderBitmap
 *
 * Purpose:
 *  Creates a bitmap image of the current Polyline.
 *
 * Parameters:
 *  phBmp           HBITMAP * in which to return the bitmap.
 *
 * Return Value:
 *  HRESULT         NOERROR if successful, otherwise a
 *                  POLYLINE_E_ value.
 */

STDMETHODIMP CPolyline::RenderBitmap(HBITMAP *phBmp)
    {
    HDC             hDC;
    HDC             hMemDC;
    HBITMAP         hBmp;
    RECT            rc;
    HGDIOBJ         hObj;

    if (NULL==phBmp)
        return ResultFromScode(POLYLINE_E_INVALIDPOINTER);

    //Render a bitmap the size of the current rectangle.
    hDC=GetDC(m_hWnd);
    hMemDC=CreateCompatibleDC(hDC);

    GetClientRect(m_hWnd, &rc);
    hBmp=CreateCompatibleBitmap(hDC, rc.right, rc.bottom);

    if (NULL!=hBmp)
        {
        //Draw the POLYLINEDATA into the bitmap.
        hObj=SelectObject(hMemDC, hBmp);
        Draw(hMemDC, FALSE, TRUE, &rc, NULL);
        SelectObject(hMemDC, hObj);
        }

    DeleteDC(hMemDC);
    ReleaseDC(m_hWnd, hDC);

    *phBmp=hBmp;
    return NOERROR;
    }



//RenderMetafile not necessary--now part of RenderMetafilePict.



/*
 * CPolyline::RenderMetafilePict
 *
 * Purpose:
 *  Renders the current Polyline into a METAFILEPICT structure in
 *  global memory.
 *
 * Parameters:
 *  phMem           HGLOBAL * in which to return the
 *                  METAFILEPICT.
 *
 * Return Value:
 *  HRESULT         NOERROR if successful, otherwise a
 *                  POLYLINE_E_ value.
 */

STDMETHODIMP CPolyline::RenderMetafilePict(HGLOBAL *phMem)
    {
    HGLOBAL         hMem;
    HMETAFILE       hMF;
    LPMETAFILEPICT  pMF;
    RECT            rc;
    HDC             hDC;

    if (NULL==phMem)
        return ResultFromScode(POLYLINE_E_INVALIDPOINTER);

    //Create a memory metafile and return its handle.
    hDC=(HDC)CreateMetaFile(NULL);

    if (NULL==hDC)
        return ResultFromScode(STG_E_MEDIUMFULL);

    SetMapMode(hDC, MM_ANISOTROPIC);
    GetClientRect(m_hWnd, &rc);
    SetWindowOrgEx(hDC, 0, 0, NULL);
    SetWindowExtEx(hDC, rc.right, rc.bottom, NULL);

    Draw(hDC, TRUE, TRUE, &rc, NULL);
    hMF=CloseMetaFile(hDC);

    if (NULL==hMF)
        return ResultFromScode(STG_E_MEDIUMFULL);

    //Allocate the METAFILEPICT structure.
    hMem=GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE
        , sizeof(METAFILEPICT));

    if (NULL==hMem)
        {
        DeleteMetaFile(hMF);
        return ResultFromScode(E_FAIL);
        }

    /*
     * Global lock only fails in PMODE if the selector is invalid
     * (like it was discarded) or references a 0 length segment,
     * neither of which can happen here.
     */
    pMF=(LPMETAFILEPICT)GlobalLock(hMem);

    pMF->hMF=hMF;
    pMF->mm=MM_ANISOTROPIC;

    //Insert the extents in MM_HIMETRIC units.
    GetClientRect(m_hWnd, &rc);
    RectConvertMappings(&rc, FALSE);
    pMF->xExt=rc.right;
    pMF->yExt=rc.bottom;

    GlobalUnlock(hMem);

    *phMem=hMem;
    return NOERROR;
    }



/*
 * CPolyline::Instance
 *
 * Purpose:
 *  Provides access to the module instance.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  HINSTANCE       The instance handle of the module.
 */

HINSTANCE CPolyline::Instance(void)
    {
    return m_hInst;
    }



/*
 * CPolyline::String
 *
 * Purpose:
 *  Provides string lookup in the Polyline string table.
 *
 * Parameters:
 *  uID             UINT of the string to return.
 *
 * Return Value:
 *  LPTSTR          Pointer to the string.
 */

LPTSTR CPolyline::String(UINT uID)
    {
    return PSZ(uID);
    }




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

void CPolyline::SendAdvise(UINT uCode)
    {
    DWORD       dwAspect=DVASPECT_CONTENT | DVASPECT_THUMBNAIL;

    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:
            //Call IOleAdviseHolder::SendOnRename (later)
            break;

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

            m_fDirty=FALSE;
            break;

        case OBJECTCODE_DATACHANGED:
            m_fDirty=TRUE;

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

            if (NULL!=m_pIAdviseSink
                & (dwAspect & m_dwAdviseAspects))
                {
                m_pIAdviseSink->OnViewChange(dwAspect
                    & m_dwAdviseAspects, 0);
                }

            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

/*
 * CPolyline::InPlaceActivate
 *
 * Purpose:
 *  Goes through all the steps of activating the Polyline as an
 *  in-place object.
 *
 * Parameters:
 *  pActiveSite     LPOLECLIENTSITE of the active site we show in.
 *  fIncludeUI      BOOL controls whether we call UIActivate too.
 *
 * Return Value:
 *  HRESULT         Whatever error code is appropriate.
 */

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

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

    if (NULL!=m_pIOleIPSite)
        {
        if (fIncludeUI)
            UIActivate();

        return NOERROR;
        }


    //1.  Initialization, obtaining interfaces, 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();


    //2.  Get the window context and create a window.
    m_pIOleIPSite->GetWindow(&hWnd);
    frameInfo.cb=sizeof(OLEINPLACEFRAMEINFO);

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


    /*
     * Create the hatch window after we get a parent window.  We
     * could not create the hatch window sooner because had nothing
     * to use for the parent.
     */
    m_pHW=new CHatchWin(m_hInst);

    if (NULL==m_pHW)
        {
        InPlaceDeactivate();
        return ResultFromScode(E_OUTOFMEMORY);
        }

    if (!m_pHW->Init(hWnd, ID_HATCHWINDOW, NULL))
        {
        InPlaceDeactivate();
        return ResultFromScode(E_OUTOFMEMORY);
        }


    //Make sure dialog is hidden
    if (NULL!=m_hDlg)
        {
        ShowWindow(m_hDlg, SW_HIDE);
        SendAdvise(OBJECTCODE_HIDEWINDOW);
        }

    //Move the hatch window to the container window.
    hWndHW=m_pHW->Window();
    SetParent(hWndHW, hWnd);

    //Move the Polyline window from the hidden dialog to hatch window
    m_pHW->HwndAssociateSet(m_hWnd);
    m_pHW->ChildSet(m_hWnd);
    m_pHW->RectsSet(&rcPos, &rcClip);   //Positions polyline

    ShowWindow(hWndHW, SW_SHOW);
    SendAdvise(OBJECTCODE_SHOWOBJECT);

    //3, 4, 5.  Do UI things: active object, shared menu, tools
    hr=NOERROR;

    if (fIncludeUI)
        hr=UIActivate();

    /*
     * Since we don't have an Undo while in-place, tell the continer
     * to free it's undo state immediately.
     */
    m_pIOleIPSite->DiscardUndoState();

    return hr;
    }




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

void CPolyline::InPlaceDeactivate(void)
    {
    UIDeactivate();

    if (NULL!=m_pHW)
        {
        RECT        rc;

        ShowWindow(m_pHW->Window(), SW_HIDE);

        //Reposition the polyline window in the dialog box.
        SetParent(m_hWnd, m_hDlg);
        CalcPolyRectInDialog(m_hDlg, &rc);

        SetWindowPos(m_hWnd, NULL, rc.left, rc.top
            , rc.right-rc.left, rc.bottom-rc.top, SWP_NOZORDER);

        m_pHW->ChildSet(NULL);

        delete m_pHW;
        m_pHW=NULL;
        }

    ReleaseInterface(m_pIOleIPFrame);
    ReleaseInterface(m_pIOleIPUIWindow)

    if (NULL!=m_pIOleIPSite)
        {
        m_pIOleIPSite->OnInPlaceDeactivate();
        ReleaseInterface(m_pIOleIPSite);
        }

    return;
    }



/*
 * CPolyline::UIActivate
 *
 * Purpose:
 *  Goes through all the steps of activating the user interface of
 *  Polyline as an in-place object.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  HRESULT         NOERROR or error code.
 */

HRESULT CPolyline::UIActivate(void)
    {
    //1.  Call IOleInPlaceSite::UIActivate
    if (NULL!=m_pIOleIPSite)
        m_pIOleIPSite->OnUIActivate();

    //2.  Set the active object
   #ifdef WIN32ANSI
    OLECHAR     szTemp[40];

    MultiByteToWideChar(CP_ACP, 0, PSZ(IDS_USERTYPE)
        , -1, szTemp, 40);
   #endif

    if (NULL!=m_pIOleIPFrame)
        {
        m_pIOleIPFrame->SetActiveObject(m_pImpIOleIPActiveObject
           #ifdef WIN32ANSI
            , szTemp);
           #else
            , PSZ(IDS_USERTYPE));
           #endif
        }

    if (NULL!=m_pIOleIPUIWindow)
        {
        m_pIOleIPUIWindow->SetActiveObject(m_pImpIOleIPActiveObject
           #ifdef WIN32ANSI
            , szTemp);
           #else
            , PSZ(IDS_USERTYPE));
           #endif
        }

    //3.  Critical for accelerators to work initially.
    SetFocus(m_pHW->Window());

    //4.  Negotiate border space.  Polyline doesn't need any.
    if (NULL!=m_pIOleIPFrame)
        m_pIOleIPFrame->SetBorderSpace(NULL);

    if (NULL!=m_pIOleIPUIWindow)
        m_pIOleIPUIWindow->SetBorderSpace(NULL);


    /*
     * 5.  Create the shared menu.  We don't have any, so tell
     *     the container to use its own menu.
     */

    if (NULL!=m_pIOleIPFrame)
        m_pIOleIPFrame->SetMenu(NULL, NULL, m_hWnd);

    m_fUIActive=TRUE;
    return NOERROR;
    }





/*
 * CPolyline::UIDeactivate
 *
 * Purpose:
 *  Reverses all the user interface activation steps from
 *  UIActivate.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  None
 */

void CPolyline::UIDeactivate(void)
    {
    m_fUIActive=FALSE;

    //We don't have any shared menu or tools to clean up.

    //Clear out the active objects
    if (NULL!=m_pIOleIPFrame)
        m_pIOleIPFrame->SetActiveObject(NULL, NULL);

    if (NULL!=m_pIOleIPUIWindow)
        m_pIOleIPUIWindow->SetActiveObject(NULL, NULL);

    if (NULL!=m_pIOleIPSite)
        m_pIOleIPSite->OnUIDeactivate(FALSE);

    return;
    }
//End CHAPTER23MOD

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕电影一区| 欧美国产精品专区| av在线一区二区| 日韩av中文字幕一区二区三区| 久久久综合激的五月天| 在线免费一区三区| 国产黄色精品视频| 麻豆精品久久久| 日韩va亚洲va欧美va久久| 亚洲欧洲美洲综合色网| 精品粉嫩超白一线天av| 欧美另类videos死尸| 91日韩精品一区| 91在线观看地址| kk眼镜猥琐国模调教系列一区二区| 日本在线不卡视频| 亚洲成人动漫在线免费观看| 国产精品日韩成人| 欧美国产一区在线| 精品国产91久久久久久久妲己 | 久久 天天综合| 麻豆视频一区二区| 男人的j进女人的j一区| 亚洲v中文字幕| 日本sm残虐另类| 久久精品久久综合| 国产又黄又大久久| 成人国产一区二区三区精品| 成人午夜在线免费| 日本丶国产丶欧美色综合| 色婷婷国产精品| 欧美一区二区免费观在线| 91精品国产乱码| 久久久久久一二三区| 亚洲欧美综合在线精品| 亚洲在线观看免费视频| 日韩综合小视频| 国产成人精品免费看| 91小视频免费观看| 欧美一卡二卡三卡| 中文字幕一区二区三区在线不卡 | 日韩精品一区二区在线观看| 久久久美女毛片| 亚洲永久精品大片| 九色综合狠狠综合久久| 波多野结衣精品在线| 欧美日韩aaaaa| 国产精品国产三级国产aⅴ中文| 亚洲一区二区三区视频在线播放 | 欧美亚洲动漫精品| 久久亚洲综合色一区二区三区| 中文字幕一区二区在线观看| 日本美女一区二区| 欧美性色综合网| 日韩成人午夜精品| 成人高清视频免费观看| 色欲综合视频天天天| 国产二区国产一区在线观看| 九色综合国产一区二区三区| av动漫一区二区| 91美女在线观看| 亚洲欧美国产77777| 日韩精品一级中文字幕精品视频免费观看| 国产综合久久久久影院| 精品视频在线免费看| 国产精品久久午夜| 国产mv日韩mv欧美| 日韩欧美一区电影| 日本三级韩国三级欧美三级| 色综合色狠狠天天综合色| 国产精品久久久99| 国产成人超碰人人澡人人澡| 精品日产卡一卡二卡麻豆| 日韩av不卡一区二区| 7777精品久久久大香线蕉| 亚洲第一福利一区| 欧美日韩免费不卡视频一区二区三区| 亚洲欧美一区二区久久| 97se亚洲国产综合在线| 亚洲黄一区二区三区| 91福利国产精品| 婷婷开心久久网| 精品日本一线二线三线不卡| 精品一区二区三区免费| 国产视频不卡一区| 91亚洲资源网| 天天av天天翘天天综合网 | 欧美性感一区二区三区| 亚洲在线视频一区| 欧美电影精品一区二区| 国产suv精品一区二区6| 亚洲人成人一区二区在线观看| 色综合中文综合网| 欧美日韩国产精品自在自线| 免费亚洲电影在线| 国产精品福利一区| 欧美精品一级二级三级| 国产麻豆视频精品| 亚洲卡通动漫在线| 精品国产一区二区三区四区四| 成人免费观看视频| 日韩黄色免费电影| 国产三级精品视频| 欧美日韩高清一区二区| 成人一区二区在线观看| 日韩成人午夜电影| 亚洲少妇30p| 亚洲国产高清在线| 精品久久久久久久久久久院品网| 91在线看国产| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一区在线观看网站| 国产精品日韩成人| 国产亚洲精品超碰| 欧美精品一区二区三区四区| 欧美在线观看你懂的| 99久久免费精品| 一本大道av一区二区在线播放| 国产精品1区2区3区| 国产高清在线精品| 国产美女在线观看一区| 久久91精品久久久久久秒播| 婷婷丁香久久五月婷婷| 亚洲一区二区三区视频在线 | 亚洲欧美日韩国产综合在线| 国产精品区一区二区三区| 国产视频一区不卡| 国产精品久久久久久久蜜臀 | 成人国产在线观看| 91麻豆国产香蕉久久精品| 色哦色哦哦色天天综合| 91精品91久久久中77777| 欧美日韩一区二区三区在线| 精品婷婷伊人一区三区三| 欧美一区二区三区在线看| 日韩免费观看2025年上映的电影 | 国产精品网站在线观看| 国产精品区一区二区三| 樱花草国产18久久久久| 亚洲不卡一区二区三区| 国产美女视频91| 日本道精品一区二区三区| 欧洲色大大久久| 日韩三级免费观看| 中文字幕一区二区三区av| 亚洲一区在线免费观看| 久久激五月天综合精品| av电影在线观看完整版一区二区| 色综合久久久久综合体桃花网| 欧美日韩免费观看一区二区三区 | 中文字幕中文在线不卡住| 亚洲国产精品麻豆| 波多野结衣中文一区| 欧美精品少妇一区二区三区| 精品精品国产高清一毛片一天堂| 中文字幕制服丝袜成人av | 久久99久久精品| 欧美在线制服丝袜| 久久久精品tv| 麻豆精品一区二区三区| 一本色道综合亚洲| 国产日韩视频一区二区三区| 日本va欧美va瓶| 91福利精品视频| 最新国产精品久久精品| 久久成人av少妇免费| 欧美亚洲动漫制服丝袜| 亚洲色图在线看| 99热这里都是精品| 国产精品欧美精品| 国产激情一区二区三区四区| 日韩欧美一级在线播放| 日韩综合在线视频| 欧美男男青年gay1069videost | 777久久久精品| 香蕉成人啪国产精品视频综合网 | 日韩1区2区3区| 日韩一区二区中文字幕| 人人超碰91尤物精品国产| 欧美一区二区视频网站| 蜜桃一区二区三区在线观看| 欧美一区二区三区男人的天堂| 午夜激情综合网| 欧美精品日日鲁夜夜添| 蜜桃视频第一区免费观看| 欧美一区二区二区| 国产xxx精品视频大全| 亚洲色图视频网| 欧美日韩精品系列| 麻豆91精品91久久久的内涵| 日韩情涩欧美日韩视频| 国产精品亚洲一区二区三区妖精| 国产亚洲成av人在线观看导航| 成人一区二区三区视频在线观看| 中文字幕一区日韩精品欧美| 欧美三级韩国三级日本一级| 日本美女一区二区三区| 国产欧美日本一区视频| 一本色道综合亚洲| 激情六月婷婷综合|