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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tenant.cpp

?? 英文版的 想要的話可以下載了 為大家服務(wù)
?? CPP
?? 第 1 頁 / 共 4 頁
字號(hào):
        return;

    //These are macros in INC\BOOK1632.H
    SendScrollPosition(m_hWnd, WM_HSCROLL, rcl.left-8);
    SendScrollPosition(m_hWnd, WM_VSCROLL, rcl.top-8);
    return;
    }



/*
 * CTenant::AddVerbMenu
 *
 * Purpose:
 *  Creates the variable verb menu item for the object in this
 *  tenant.
 *
 * Parmeters:
 *  hMenu           HMENU on which to add items.
 *  iPos            UINT position on that menu to add items.
 *
 * Return Value:
 *  None
 */

void CTenant::AddVerbMenu(HMENU hMenu, UINT iPos)
    {
    HMENU       hMenuTemp;
    LPOLEOBJECT pObj=m_pIOleObject;

    //If we're static, say we have no object.
    if (TENANTTYPE_STATIC==m_tType)
        pObj=NULL;

    OleUIAddVerbMenu(pObj, NULL, hMenu, iPos, IDM_VERBMIN
        , IDM_VERBMAX, TRUE, IDM_EDITCONVERT, &hMenuTemp);

    return;
    }




/*
 * CTenant::TypeGet
 *
 * Purpose:
 *  Returns the type of this tenant
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  TENANTTYPE      Type of the tenant.
 */

TENANTTYPE CTenant::TypeGet(void)
    {
    return m_tType;
    }






/*
 * CTenant::CopyEmbeddedObject
 *
 * Purpose:
 *  Copies an embedded object to the given data object (via SetData,
 *  assuming this is a data transfer object for clipboard/drag-drop)
 *  if that's what we're holding.
 *
 * Parameters:
 *  pIDataObject    LPDATAOBJECT in which to store the copy.
 *  pFE             LPFORMATETC into which to copy CFSTR_EMBEDDEDOBJECT
 *                  if we put that in the data object.
 *  pptl            PPOINTL to the pick point (NULL outside of
 *                  drag-drop);
 *
 * Return Value:
 *  None
 */

void CTenant::CopyEmbeddedObject(LPDATAOBJECT pIDataObject
    , LPFORMATETC pFE, PPOINTL pptl)
    {
    LPPERSISTSTORAGE    pIPS;
    STGMEDIUM           stm;
    FORMATETC           fe;
    HRESULT             hr;
    UINT                cf;
    POINTL              ptl;
    SIZEL               szl;

    //Can only copy embeddings.
    if (TENANTTYPE_EMBEDDEDOBJECT!=m_tType || NULL==m_pIOleObject)
        return;

    if (NULL==pptl)
        {
        SETPOINTL(ptl, 0, 0);
        pptl=&ptl;
        }

    /*
     * Create CFSTR_EMBEDDEDOBJECT.  This is simply an IStorage with
     * a copy of the embedded object in it.  The not-so-simple part
     * is getting an IStorage to stuff it in.  For this operation
     * we'll use a temporary compound file.
     */

    stm.pUnkForRelease=NULL;
    stm.tymed=TYMED_ISTORAGE;
    hr=StgCreateDocfile(NULL, STGM_TRANSACTED | STGM_READWRITE
        | STGM_CREATE| STGM_SHARE_EXCLUSIVE | STGM_DELETEONRELEASE
        , 0, &stm.pstg);

    if (FAILED(hr))
        return;

    m_pObj->QueryInterface(IID_IPersistStorage, (PPVOID)&pIPS);

    if (NOERROR==pIPS->IsDirty())
        {
        OleSave(pIPS, stm.pstg, FALSE);
        pIPS->SaveCompleted(NULL);
        }
    else
        m_pIStorage->CopyTo(0, NULL, NULL, stm.pstg);

    pIPS->Release();

    //stm.pstg now has a copy, so stuff it away.
    cf=RegisterClipboardFormat(CFSTR_EMBEDDEDOBJECT);
    SETDefFormatEtc(fe, cf, TYMED_ISTORAGE);

    if (SUCCEEDED(pIDataObject->SetData(&fe, &stm, TRUE)))
        *pFE=fe;
    else
        ReleaseStgMedium(&stm);

    stm.tymed=TYMED_HGLOBAL;

    /*
     * You want to make sure that if this object is iconic, that you
     * create the object descriptor with DVASPECT_ICON instead of
     * the more typical DVASPECT_CONTENT.  Also remember that
     * the pick point is in HIMETRIC.
     */
    XformSizeInPixelsToHimetric(NULL, (LPSIZEL)pptl, (LPSIZEL)&ptl);

    SETSIZEL(szl, (10*(m_rcl.right-m_rcl.left))
        , (10 * (m_rcl.bottom-m_rcl.top)));

    stm.hGlobal=INOLE_ObjectDescriptorFromOleObject
        (m_pIOleObject, m_fe.dwAspect, ptl, &szl);

    cf=RegisterClipboardFormat(CFSTR_OBJECTDESCRIPTOR);
    SETDefFormatEtc(fe, cf, TYMED_HGLOBAL);

    if (FAILED(pIDataObject->SetData(&fe, &stm, TRUE)))
        ReleaseStgMedium(&stm);

    return;
    }





/*
 * CTenant::NotifyOfRename
 *
 * Purpose:
 *  Instructs the tenant that the document was saved under a
 *  different name.  In order to keep the right compound document
 *  user interface, this tenant needs to tell its object through
 *  IOleObject::SetHostNames.
 *
 * Parameters:
 *  pszFile         LPTSTR of filename.
 *  pvReserved      LPVOID reserved for future use.
 *
 * Return Value:
 *  None
 */

void CTenant::NotifyOfRename(LPTSTR pszFile, LPVOID pvReserved)
    {
    TCHAR       szObj[40];
    TCHAR       szApp[40];

    if (NULL==m_pIOleObject)
        return;

    if (TEXT('\0')==*pszFile)
        {
        LoadString(m_pPG->m_hInst, IDS_UNTITLED, szObj
            , sizeof(szObj));
        }
    else
        {
        GetFileTitle(pszFile, szObj, sizeof(szObj));

       #ifndef WIN32
        //Force filenames to uppercase in DOS versions.
        AnsiUpper(szObj);
       #endif
        }

    LoadString(m_pPG->m_hInst, IDS_CAPTION, szApp, sizeof(szApp));
   #ifdef WIN32ANSI
    OLECHAR     szObjW[40], szAppW[40];

    MultiByteToWideChar(CP_ACP, 0, szObj, -1, szObjW, 40);
    MultiByteToWideChar(CP_ACP, 0, szApp, -1, szAppW, 40);
    m_pIOleObject->SetHostNames(szAppW, szObjW);
   #else
    m_pIOleObject->SetHostNames(szApp, szObj);
   #endif
    return;
    }

//End CHAPTER17MOD





/*
 * CTenant::Activate
 *
 * Purpose:
 *  Activates a verb on the object living in the tenant.  Does
 *  nothing for static objects.
 *
 * Parameters:
 *  iVerb           LONG of the verb to execute.
 *
 * Return Value:
 *  BOOL            TRUE if the object changed due to this verb
 *                  execution.
 */

BOOL CTenant::Activate(LONG iVerb)
    {
    //CHAPTER17MOD
    RECT        rc, rcH;
    CHourglass *pHour;
    SIZEL       szl;

    //Can't activate statics.
    if (TENANTTYPE_STATIC==m_tType || NULL==m_pIOleObject)
        {
        MessageBeep(0);
        return FALSE;
        }

    RECTFROMRECTL(rc, m_rcl);
    RectConvertMappings(&rc, NULL, TRUE);
    XformRectInPixelsToHimetric(NULL, &rc, &rcH);

    pHour=new CHourglass;

    //Get the server running first, then do a SetExtent, then show it
    OleRun(m_pIOleObject);

    if (m_fSetExtent)
        {
        SETSIZEL(szl, rcH.right-rcH.left, rcH.top-rcH.bottom);
        m_pIOleObject->SetExtent(m_fe.dwAspect, &szl);
        m_fSetExtent=FALSE;
        }

    m_pIOleObject->DoVerb(iVerb, NULL, m_pImpIOleClientSite, 0
        , m_hWnd, &rcH);

    delete pHour;

    //If object changes, IAdviseSink::OnViewChange will see it.
    return FALSE;
    //End CHAPTER17MOD
    }






/*
 * CTenant::Draw
 *
 * Purpose:
 *  Draws the tenant in its rectangle on the given hDC.  We assume
 *  the DC is already set up for the mapping mode in which our
 *  rectangle is expressed, since the Page we're in tells us both
 *  the rect and the hDC.
 *
 * Parameters:
 *  hDC             HDC in which to draw.  Could be a metafile,
 *                  memory DC, screen, or printer.
 *  ptd             DVTARGETDEVICE * describing the device.
 *  hIC             HDC holding an information context (printing).
 *  xOff, yOff      int offsets for the page in lometric
 *  fNoColor        BOOL indicating if we should do B & W
 *  fPrinter        BOOL indicating if we should render for a
 *                  printer.
 *
 * Return Value:
 *  None
 */

void CTenant::Draw(HDC hDC, DVTARGETDEVICE *ptd, HDC hIC
    , int xOff, int yOff, BOOL fNoColor, BOOL fPrinter)
    {
    HRESULT         hr;
    RECT            rc;
    RECTL           rcl;
    UINT            uMM;

    //CHAPTER17MOD
    //We hold IViewObject2 all the time now, so no QueryInterface
    //End CHAPTER17MOD

    RECTFROMRECTL(rc, m_rcl);
    OffsetRect(&rc, -xOff, -yOff);
    RECTLFROMRECT(rcl, rc);

    //CHAPTER17MOD
    //Repaint erases the rectangle to insure full object cleanup
    if (!fNoColor && !fPrinter)
        {
        COLORREF    cr;
        cr=SetBkColor(hDC, GetSysColor(COLOR_WINDOW));
        ExtTextOut(hDC, rc.left, rc.top, ETO_OPAQUE, &rc, NULL
            , 0, NULL);
        SetBkColor(hDC, cr);
        }

    //We have to use Draw since we have a target device and IC.
    hr=m_pIViewObject2->Draw(m_fe.dwAspect, -1, NULL, ptd, hIC, hDC
        , &rcl, NULL, NULL, 0);

    //End CHAPTER17MOD

    /*
     * If Draw failed, then perhaps it couldn't work for the device,
     * so try good old OleDraw as a last resort.  The code will
     * generally be OLE_E_BLANK.
     */
    if (FAILED(hr))
        OleDraw(m_pObj, m_fe.dwAspect, hDC, &rc);

    //CHAPTER17MOD
    if (!fPrinter
        && (TENANTSTATE_SELECTED | TENANTSTATE_OPEN) & m_dwState)
        {
        /*
         * Draw sizing handles to show the selection state.  We
         * convert things to MM_TEXT since that's what this
         * function expects.
         */
        RectConvertMappings(&rc, NULL, TRUE);
        uMM=SetMapMode(hDC, MM_TEXT);

        if (TENANTSTATE_SELECTED & m_dwState)
            {
            UIDrawHandles(&rc, hDC, UI_HANDLES_INSIDE
                | UI_HANDLES_NOBORDER | UI_HANDLES_USEINVERSE
                , CXYHANDLE, TRUE);
            }

        if (TENANTSTATE_OPEN & m_dwState)
            UIDrawShading(&rc, hDC, UI_SHADE_FULLRECT, 0);

        uMM=SetMapMode(hDC, uMM);
        }
    //End CHAPTER17MOD

    return;
    }





/*
 * CTenant::Repaint
 * CTenant::Invalidate
 *
 * Purpose:
 *  Repaints the tenant where it lies or invalidates its area
 *  for later repainting.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  None
 */

void CTenant::Repaint(void)
    {
    RECT        rc;
    HDC         hDC;

    //CHAPTER17MOD
    /*
     * We might be asked to repaint from
     * IOleClientSite::OnShowWindow after we've switched pages if
     * our server was running. This check on m_cOpens prevents that.
     */
    if (0==m_cOpens || !m_fRepaintEnabled)
        return;
    //End CHAPTER17MOD

    hDC=GetDC(m_hWnd);
    SetRect(&rc, m_pPG->m_xPos, m_pPG->m_yPos, 0, 0);
    RectConvertMappings(&rc, NULL, FALSE);

    SetMapMode(hDC, MM_LOMETRIC);
    Draw(hDC, NULL, NULL, rc.left, rc.top, FALSE, FALSE);

    ReleaseDC(m_hWnd, hDC);
    return;
    }


void CTenant::Invalidate(void)
    {
    RECTL       rcl;
    RECT        rc;

    RectGet(&rcl, TRUE);
    RECTFROMRECTL(rc, rcl);

    OffsetRect(&rc, -(int)m_pPG->m_xPos, -(int)m_pPG->m_yPos);
    InvalidateRect(m_hWnd, &rc, FALSE);

    return;
    }




//CHAPTER17MOD
/*
 * CTenant::ObjectClassFormatAndIcon
 *
 * Purpose:
 *  Helper function for CPage::ConvertObject to retrieve necessary
 *  information about the object.
 *
 * Parameters:
 *  pClsID          LPCLSID in which to store the CLSID.
 *  pwFormat        LPWORD in which to store the clipboard format
 *                  used.
 *  ppszType        LPTSTR * in which to return a pointer to a
 *                  type string.
 *  phMetaIcon      HGLOBAL * in which to return the metafile
 *                  icon currently in use.
 *
 * Return Value:
 *  None
 */

void CTenant::ObjectClassFormatAndIcon(LPCLSID pClsID
    , LPWORD pwFormat, LPTSTR *ppszType, HGLOBAL *phMetaIcon
    , LPTSTR *ppszLabel)
    {
    HRESULT         hr;
    TCHAR           szType[128];
    LPDATAOBJECT    pIDataObject;
    FORMATETC       fe;
    STGMEDIUM       stm;

    if (TENANTTYPE_EMBEDDEDOBJECT!=m_tType || NULL==m_pIOleObject)
        return;

    if (NULL==pClsID || NULL==pwFormat || NULL==ppszType
        || NULL==phMetaIcon)
        return;


    /*
     * For embedded objects get the real CLSID of the object and
     * its format string.  If this fails then we can try to ask
     * the object, or we can look in the registry.
     */

    hr=ReadClassStg(m_pIStorage, pClsID);

    if (FAILED(hr))
        {
        hr=m_pIOleObject->GetUserClassID(pClsID);

        if (FAILED(hr))
            *pClsID=CLSID_NULL;
        }


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜国产日韩另类美女| 国产精品亚洲一区二区三区妖精 | 国产成人夜色高潮福利影视| 一区二区三区在线视频观看58| 日韩一区二区三| 一本到三区不卡视频| 国产精品一区二区男女羞羞无遮挡 | 99久久99久久精品免费看蜜桃| 日韩精品乱码av一区二区| 国产精品久久久久久久久久久免费看| 欧美一卡二卡三卡| 在线精品视频一区二区| 国产成都精品91一区二区三| 日本aⅴ亚洲精品中文乱码| 亚洲最新在线观看| 国产精品国产三级国产普通话99 | 亚洲女人****多毛耸耸8| 久久婷婷国产综合国色天香| 欧美年轻男男videosbes| 一本色道久久综合亚洲精品按摩| 福利电影一区二区| 日本欧美一区二区| 午夜精品福利久久久| 一区二区成人在线观看| 亚洲少妇中出一区| 中文字幕在线一区| 欧美国产成人在线| 欧美国产禁国产网站cc| 国产欧美日韩不卡| 国产精品入口麻豆九色| 久久久99精品免费观看| 久久久久88色偷偷免费| 久久精品欧美日韩精品| 久久日一线二线三线suv| 精品福利在线导航| 日韩精品中文字幕在线一区| 精品美女被调教视频大全网站| 欧美一区二区精品在线| 精品久久国产97色综合| 精品美女在线播放| 久久久久久久电影| 国产欧美一区二区精品忘忧草 | 国产suv精品一区二区883| 国产高清不卡一区| 成人午夜视频免费看| 丰满亚洲少妇av| 99久久婷婷国产综合精品| 91视频观看视频| 色综合久久久久久久久| 欧美日韩国产高清一区二区三区 | 亚洲一区二区三区四区在线观看 | 91成人免费网站| 精品视频在线免费看| 欧美日韩免费电影| 欧美一级电影网站| 久久影院午夜论| 国产精品国产自产拍高清av| 一区二区三区在线免费播放| 午夜精品久久久久久| 麻豆国产精品官网| 成人午夜激情片| 色综合久久88色综合天天| 欧美久久久久中文字幕| 久久久无码精品亚洲日韩按摩| 欧美国产一区二区在线观看| 亚洲视频你懂的| 丝瓜av网站精品一区二区| 狠狠网亚洲精品| 99国产精品久| 欧美一区二区在线视频| 久久免费看少妇高潮| 亚洲理论在线观看| 免费成人在线观看视频| 成人a级免费电影| 欧美日韩在线免费视频| 久久夜色精品一区| 亚洲综合一区二区| 精品亚洲porn| 欧美色综合网站| 欧美激情中文字幕一区二区| 丝袜美腿亚洲色图| 成人小视频在线| 日韩三级在线观看| 亚洲视频在线观看三级| 精品一区在线看| 91福利视频久久久久| 久久久国际精品| 亚洲成av人片一区二区三区| 成人在线综合网| 日韩欧美一区二区视频| 日韩精品视频网| 蜜臀av一区二区在线免费观看| 丁香五精品蜜臀久久久久99网站| 欧美三区在线观看| 国产女人18毛片水真多成人如厕 | 精品国产乱码久久久久久牛牛| 亚洲欧洲精品天堂一级 | 亚洲成a人片在线不卡一二三区| 国产精品一级片在线观看| 欧美日本视频在线| 综合久久国产九一剧情麻豆| 精品一区二区在线观看| 91成人网在线| 日韩毛片视频在线看| 久久不见久久见免费视频7| 日本久久电影网| 国产精品成人免费| 国产激情精品久久久第一区二区 | 日本乱人伦一区| 国产情人综合久久777777| 日本欧美大码aⅴ在线播放| 91色在线porny| 国产精品嫩草99a| 国产成人在线视频网站| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美日韩在线观看一区二区 | 亚洲自拍偷拍图区| eeuss鲁片一区二区三区在线观看| 26uuu色噜噜精品一区| 欧美一区二区三区公司| 色嗨嗨av一区二区三区| 国产日韩av一区二区| 另类小说一区二区三区| 91麻豆精品国产91久久久久久 | 欧美高清你懂得| 一区二区三区欧美在线观看| 99re亚洲国产精品| 中文字幕一区二区三区蜜月| 一区二区三区国产精品| 丝袜国产日韩另类美女| 欧美性生活一区| 一区二区免费看| 99vv1com这只有精品| 亚洲人成网站影音先锋播放| 高清国产一区二区| 国产精品丝袜一区| 99精品视频在线免费观看| 亚洲视频一二三| 日本精品免费观看高清观看| 亚洲国产综合在线| 欧美日韩亚洲综合在线| 日韩经典一区二区| 欧美xxx久久| 国产精品一级二级三级| 国产精品久久久久久久久免费相片| 成人综合婷婷国产精品久久| 亚洲人午夜精品天堂一二香蕉| 一本到高清视频免费精品| 亚洲成人午夜电影| 欧美一区二区三级| 国产精品99久| 亚洲欧美日韩中文播放| 欧美三级韩国三级日本一级| 久久精品国产免费| 国产欧美日韩三区| 色综合久久久久久久久久久| 亚洲aaa精品| 欧美第一区第二区| 国产不卡高清在线观看视频| 亚洲日本va午夜在线电影| 欧美色图天堂网| 久久99精品国产91久久来源| 国产精品视频免费| 欧美日本国产视频| 精品一区二区三区视频在线观看| 国产日韩欧美在线一区| 色婷婷国产精品| 麻豆国产91在线播放| 中文字幕中文乱码欧美一区二区 | 欧美日韩1区2区| 国产美女精品人人做人人爽| 亚洲日本va午夜在线影院| 欧美一区二区免费| 99在线视频精品| 日本成人中文字幕在线视频| 亚洲国产精品ⅴa在线观看| 色av综合在线| 狠狠久久亚洲欧美| 亚洲五月六月丁香激情| 久久这里都是精品| 欧美午夜影院一区| 久久99精品国产麻豆婷婷| 亚洲丝袜自拍清纯另类| 日韩欧美卡一卡二| 色偷偷88欧美精品久久久| 久久精品国产一区二区三| 亚洲最大的成人av| 国产亚洲欧美一区在线观看| 欧美日韩精品欧美日韩精品| 国产.精品.日韩.另类.中文.在线.播放| 亚洲专区一二三| 久久精品免费在线观看| 欧美日韩电影一区| 色综合一个色综合亚洲| 国产一区美女在线| 婷婷综合另类小说色区| 成人免费小视频| 国产日韩欧美精品在线| 欧美精品一二三| 99久久精品国产毛片|