• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            沒(méi)畫完的畫

            喂馬 劈柴 BBQ~
            posts - 37, comments - 55, trackbacks - 0, articles - 0
              C++博客 ::  :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            [Z]About OLE2 第2集

            Posted on 2008-09-18 12:20 沒(méi)畫完的畫 閱讀(966) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows COM

            OLE 2 高級(jí)編程技術(shù)   主要還是講了OLE內(nèi)部的實(shí)現(xiàn)機(jī)制,
            看了半天,還沒(méi)看到相關(guān)創(chuàng)建容器的相關(guān)內(nèi)容,看的過(guò)程中幾度我曾想昏睡過(guò)去……
             
             
            數(shù)據(jù)對(duì)象 IDataObject
            傳遞協(xié)議是一種將 IDataObject 指針從數(shù)據(jù)的源傳送到數(shù)據(jù)的用戶那兒的一種機(jī)制
            任何可被認(rèn)作是數(shù)據(jù)源的部份都可以通過(guò)一個(gè)它可以其上實(shí)現(xiàn) IDataObject 接口的數(shù)據(jù)對(duì)象來(lái)描述它的數(shù)據(jù)
             
            視圖對(duì)象和 IViewObject 接口
            視圖對(duì)象類似于數(shù)據(jù)對(duì)象,因?yàn)樗偸橇硗馓幚硪恍┢渌鼜?fù)雜的對(duì)象的方法
            視圖對(duì)象就是用戶可以通過(guò)一個(gè) IViewObject 接口指針來(lái)使用任何對(duì)象,這種安排可使讀者能要求對(duì)象繪制出其自身或有關(guān)其圖象表示形式的管理細(xì)節(jié)。
            接口的存在可使一個(gè)對(duì)象用戶要求對(duì)象直接呈現(xiàn)到設(shè)備上而不是呈送到傳送媒介上
             
            詢問(wèn)對(duì)象,“你能否在我提供的HDC畫出你自己?”就相當(dāng)于以 IID_IViewObject 調(diào)用 QueryInterface().
            如果對(duì)象不能做到或?qū)ο笤贓XE中,則回答,“不能”
             
            ·如果需要改變映象模式或任何其它有關(guān) hdc 的畫面,要確保在進(jìn)入 IViewObject::Draw 時(shí)使用 SaveDC 而在 退出時(shí)使用 RestoreDC()
             
            IViewObject::Draw() 的三個(gè)參數(shù)分別為一個(gè)畫面(dwAspect),一個(gè)片段索引(lindex),以及一個(gè)指向目標(biāo)設(shè)備結(jié)構(gòu)的指針(ptd)
             
            ·不能將 IViewObject 指針從一個(gè)進(jìn)程傳送到另一進(jìn)程, 因?yàn)?HDC 只有在同一進(jìn)程的 context 中才有意義
             
            pIViewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, 0, hDC, &rc, NULL, NULL, 0);
            這行代碼的意義是“在該DC上的一個(gè)矩形上繪制對(duì)象(DVASPECT_CONTENT, -1)”
             
            dwAspect(DWORD):
            DVASPECT_CONTENT
            DVASPECT_THUMBNAIL
            DVASPECT_ICON
            DVASPECT_DOCPRINT
             
            lindex(LONG) : 數(shù)據(jù)片斷的索引,在OLE2 中, 它總是為 -1
             
            OLE2 提供API  OleDraw() 它實(shí)際上調(diào)用了 IViewObject::Draw()...
             
            通過(guò) AdviseSink 數(shù)據(jù)對(duì)象的用戶可在數(shù)據(jù)對(duì)象中的特定數(shù)據(jù)格式發(fā)生變化時(shí)接收到 通知
            咨詢連接的建立可以有很多選擇,如對(duì)象是否必須以通知發(fā)送數(shù)據(jù)。。
             
            OLE2UI 庫(kù).....(現(xiàn)在才知道原來(lái)有這個(gè)東西)
             
            pick - drag - drop 與 Cut/copy - Paste 的區(qū)別是,拖放操作直接而且立即完成
             
            通過(guò)將一個(gè)窗口句柄及一個(gè)指向 IDropTarget 接口的指針傳遞給 RegisterDragDrop  一個(gè)用戶將自己注冊(cè)為一個(gè) 放目標(biāo)
            一個(gè)源通過(guò)將其 IDataObject  及 IDropSource 傳遞給 DoDragDrop 來(lái)啟動(dòng)拖放操作
            執(zhí)行 DoDragDrop 來(lái)完成整個(gè)拖放操作
             
            一個(gè)循序漸近的拖放實(shí)現(xiàn): Cosmo
             
            IDropTarget::DragOver()
            IDropTarget::DragLeave()
             
            IDropSource
             
            OLE2的拖放機(jī)制是剪貼板操作的一個(gè)流線(streamlining)
             
            被動(dòng)態(tài),還未裝到內(nèi)存
            裝載態(tài),在磁盤中裝入內(nèi)存
            運(yùn)行態(tài),已經(jīng)裝到內(nèi)存中運(yùn)行
             
            DoVerb 在被以 OLEIVERB_SHOW 調(diào)用時(shí),將對(duì)象從隱含的運(yùn)行態(tài)移至可以的運(yùn)行態(tài),而在被以 OLEIVERB_HIDE 調(diào)用時(shí),將對(duì)象從可見運(yùn)行態(tài)移至隱含運(yùn)行態(tài),IOleObject::Close 則將任何對(duì)象從運(yùn)行態(tài)移至裝載態(tài)
             
            OleCreate 創(chuàng)建一個(gè)新的對(duì)象,對(duì)象即刻處于裝載態(tài), 在調(diào)用 OleCreate 后一般會(huì)很快調(diào)用 DoVerb 使對(duì)象處于運(yùn)行態(tài)
             
            容器總是有 IOleObject, IDataObject, IPersistStorage, IViewObject, 和 IOleCache 接口
            IOleClientSite(現(xiàn)場(chǎng)),對(duì)象在容器中的位置的相關(guān)描述
             
            IAdviseSink::OnViewChange() 用來(lái)接收 ViewChange 的相關(guān)相變的通知
            重畫時(shí),將會(huì)生成一個(gè)對(duì) IViewObject::Draw 的調(diào)用(通過(guò) OleDraw)
             
            實(shí)現(xiàn)給OLE對(duì)象加上陰影,OleUIDrawShading()
             
            OleUIInsertObject() 顯示 InsertObject 對(duì)話框

            后記:
            什么是OLE, 如何實(shí)現(xiàn)自己的OLE容器, 別問(wèn)我, 我還沒(méi)搞懂!!!

            无码人妻久久一区二区三区蜜桃| 午夜欧美精品久久久久久久| 欧美一区二区三区久久综| 久久青青草原精品国产不卡| 国产精品久久毛片完整版| 久久影院综合精品| 麻豆亚洲AV永久无码精品久久| 亚洲精品美女久久久久99小说| AA级片免费看视频久久| 日本一区精品久久久久影院| 国产亚洲欧美精品久久久| 免费久久人人爽人人爽av| 色欲av伊人久久大香线蕉影院| 久久精品国产精品亚洲精品| 午夜天堂av天堂久久久| 久久99国内精品自在现线| 色综合久久精品中文字幕首页| 精品久久久久久久无码| 91精品国产高清久久久久久91| 国产精品久久久天天影视香蕉| 久久综合久久性久99毛片| 久久久久亚洲AV成人网人人网站 | 国内精品久久久久久不卡影院 | 亚洲精品WWW久久久久久| 欧美一级久久久久久久大片| 亚洲香蕉网久久综合影视| 国内精品久久久久影院一蜜桃| 国产精品久久成人影院| 久久久不卡国产精品一区二区 | 久久久免费观成人影院 | 久久婷婷五月综合国产尤物app| 久久精品国产亚洲AV大全| 国产激情久久久久影院小草 | 日本久久久久久中文字幕| 久久亚洲国产成人影院网站| 久久久精品人妻一区二区三区蜜桃 | 人妻少妇久久中文字幕一区二区| 国产欧美久久久精品影院| 久久99国产精品久久久| 久久99国产精品久久99小说| 久久婷婷五月综合国产尤物app|