青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

萬星星@豌豆莢 歡迎加入我們
一個吃軟飯的男人!!!!!我只想寫程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0

我對ole技術(shù)的了解源于com技術(shù)的學(xué)習(xí),認(rèn)識源于windows os上多年的編程,而深入理解卻來之多年的痛苦摸索、反復(fù)的體會,水到渠成的感覺終于有了。
記得很久以前有個人加我qq,說想學(xué)mfc,問有什么辦法。我告訴它,得花2、3年時間才能入門,他說算了還是不學(xué)。我不知道是不是害了他,或者過早斷送了他學(xué)習(xí)C++的路。小的時候很盼望長大,可以賺錢自立;記得學(xué)習(xí)編程的時候很希望自己能夠入門。這種希望都變成了現(xiàn)時,自己走過的路只有自己清楚。有人說java好,有人說linux下編程來錢,有人說鉆研技術(shù)沒錢途,這些道理我明白只是自己可能并沒有那么大夢想,或許很小的夢想都能滿足我。
對于我這個年齡的青年來說,ole技術(shù)真的很晦澀難懂,這并不是自夸。記得以前在公司的時候,有個boss對com很了解。我本身不太愛問別人技術(shù)細(xì)節(jié)問題,但是崇拜之情下我找了他:做控件的時候如何強制控制控件的尺寸。得到的答案是:具體你看看里面的代碼。當(dāng)時我沒有弄明白,只是暫時放棄。第二次是在研一的時候,問一個高級工程師(30多歲),如何在控件里面獲取當(dāng)前是設(shè)計時還是運行時。答案是:我回去看看在告訴你。結(jié)果是杳無音訊。我曾一度放棄com知識的進(jìn)一步學(xué)習(xí)有一年,只是因為身邊少了一個導(dǎo)師(在后來遇到了),或許自己很笨。
不多說了,下面來看技術(shù)吧。
問題是這樣的:開發(fā)環(huán)境里面一般都是支持activex控件插入的,比如vb編輯器、vc編輯器、office系列產(chǎn)品,在mfc里面有ole文檔。
假設(shè)我們要做一個activex容器,支持activex的插入、設(shè)計時屬性編程的話,恐怕就需要一個載體(窗口),首先使其成為容器,支持插入,然后要提供idispatch接口為控件獲取環(huán)境屬性提供支持。為什么呢?我們首先來看看ATL.CComControlBase.GetAmbientUserMode方法:

HRESULT GetAmbientUserMode(BOOL& bUserMode)
    
{
        CComVariant var;
        HRESULT hRes 
= GetAmbientProperty(DISPID_AMBIENT_USERMODE, var);
        ATLASSERT(var.vt 
== VT_BOOL || FAILED(hRes));
        bUserMode 
= var.boolVal;
        
return hRes;
    }


進(jìn)一步:

HRESULT GetAmbientProperty(DISPID dispid, VARIANT& var)
    
{
        HRESULT hRes 
= E_FAIL;
        
if (m_spAmbientDispatch.p != NULL)
            hRes 
= m_spAmbientDispatch.GetProperty(dispid, &var);
        
return hRes;
    }


其中m_spAmbientDispatch的獲取是在這里:

inline HRESULT CComControlBase::IOleObject_SetClientSite(IOleClientSite *pClientSite)
{
    ATLASSERT(pClientSite 
== NULL || m_spClientSite == NULL);
    m_spClientSite 
= pClientSite;
    m_spAmbientDispatch.Release();
    
if (m_spClientSite != NULL)
    
{
        m_spClientSite
->QueryInterface(IID_IDispatch,
            (
void**&m_spAmbientDispatch.p);
    }

    
return S_OK;
}


也就是activex控件在放到自己窩里面的時候設(shè)置的。這樣我們的容器就需要實現(xiàn)IDispatch以便控件查詢環(huán)境屬性。

// this for activex control AMBIENT query
STDMETHODIMP CActiveXCtrl::Invoke(
                  DISPID dispidMember, REFIID iid, LCID lcid,
                  WORD wFlags, DISPPARAMS
* pdpParams, VARIANT* pvarResult,
                  EXCEPINFO
* pExceptionInfo, UINT* piArgError)
{
    
if(dispidMember == DISPID_AMBIENT_USERMODE)
    
{
        VariantClear(pvarResult);
        pvarResult
->vt = VT_BOOL;
        pvarResult
->boolVal = VARIANT_FALSE;
        
return S_OK;
    }

    
return E_NOTIMPL;
}


這里只是簡單的返回activex控件的用戶模式為設(shè)計時。我有一個測試,代碼如下:

HRESULT OnDraw(ATL_DRAWINFO& di)
    
{
        RECT
& rc = *(RECT*)di.prcBounds;
        Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);

        SetTextAlign(di.hdcDraw, TA_CENTER
|TA_BASELINE);
        BOOL bUserMode 
= FALSE;
        HRESULT hr 
= GetAmbientUserMode(bUserMode);
        
if(bUserMode)
        
{
            LPCTSTR pszText 
= _T("ATL 3.0 : UserMode");

            TextOut(di.hdcDraw, 
                (rc.left 
+ rc.right) / 2
                (rc.top 
+ rc.bottom) / 2
                pszText, 
                lstrlen(pszText));
        }

        
else
        
{
            LPCTSTR pszText 
= _T("ATL 3.0 : DesignMode");
            TextOut(di.hdcDraw, 
                (rc.left 
+ rc.right) / 2
                (rc.top 
+ rc.bottom) / 2
                pszText, 
                lstrlen(pszText));
        }


        
return S_OK;
    }


運行效果如下:

微軟有一個控件叫owc11.chartspace.11,在設(shè)計時支持?jǐn)?shù)據(jù)選擇,而運行時不支持,來看看運行效果:



posted on 2007-05-13 08:57 萬連文 閱讀(2592) 評論(2)  編輯 收藏 引用 所屬分類: ATL

FeedBack:
# re: OLE容器之環(huán)境屬性支持
2007-05-13 17:33 | doodle
WOW 很詳細(xì), 仔細(xì)學(xué)習(xí)。。。

www.doodle8.cn 涂鴉基地,跟蹤最新的 web2.0 資源  回復(fù)  更多評論
  
# re: OLE容器之環(huán)境屬性支持
2014-07-01 12:52 | xuthus
你好,有沒有研究過C#下的OLE容器設(shè)計。
我正在做這方面的項目,不知道你有沒有興趣,有報酬。
郵箱:xuthus@sina.com,隨時聯(lián)系我。  回復(fù)  更多評論
  
簡歷下載
聯(lián)系我

<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(66)

隨筆分類

隨筆檔案

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美日本精品| 免费中文日韩| 久久国产精品毛片| 一本色道久久综合| 亚洲高清中文字幕| 红桃视频国产精品| 国产精品午夜av在线| 欧美激情1区2区| 麻豆成人在线观看| 你懂的一区二区| 噜噜噜噜噜久久久久久91| 久久精品女人的天堂av| 欧美一区二区三区喷汁尤物| 亚洲日本一区二区| 欧美~级网站不卡| 久久这里只精品最新地址| 久久精品电影| 麻豆精品视频在线观看视频| 猛干欧美女孩| 亚洲高清av| 亚洲精品一区二区三区福利| 亚洲人成啪啪网站| 99精品99| 蜜臀av国产精品久久久久| 欧美涩涩网站| 亚洲狠狠婷婷| 久久久国产91| 亚洲视频一区二区免费在线观看| 久久精品国产99国产精品| 欧美精品在线一区二区三区| 国产真实久久| 午夜久久久久久| 亚洲手机成人高清视频| 亚洲精品中文字幕在线| 国产亚洲精品激情久久| 国产在线日韩| 午夜精品视频在线观看一区二区| 免费亚洲视频| 性欧美在线看片a免费观看| 欧美精品免费看| 激情综合网激情| 欧美一区二区成人| 99av国产精品欲麻豆| 免费91麻豆精品国产自产在线观看| 国产精品一区三区| 亚洲无限av看| 日韩视频精品在线观看| 久久综合免费视频影院| 国内精品久久久久久久97牛牛| 亚洲欧美清纯在线制服| 一区二区三区免费在线观看| 欧美激情中文字幕一区二区| 亚洲激情视频在线观看| 免费中文日韩| 噜噜噜91成人网| 91久久精品国产91久久性色| 欧美电影在线| 欧美激情一区二区三区在线视频观看 | 亚洲日本免费电影| 久久这里有精品15一区二区三区| 国产婷婷精品| 久久久精品视频成人| 午夜视频在线观看一区二区三区 | 久久久久久久久久久久久久一区| 国产精品你懂的| 亚洲欧美视频一区二区三区| 亚洲在线一区二区三区| 国产精品自拍网站| 久久精品一区四区| 久久精品国产一区二区电影| 在线日本欧美| 亚洲日本中文字幕| 国产精品免费视频xxxx| 久久精品亚洲乱码伦伦中文 | 午夜在线a亚洲v天堂网2018| 国产麻豆午夜三级精品| 久久蜜桃精品| 美女黄网久久| 亚洲网站在线观看| 午夜精品www| 亚洲福利视频在线| 日韩一级大片在线| 国产精品拍天天在线| 久久久高清一区二区三区| 久久这里有精品15一区二区三区| 亚洲久久一区| 91久久久久久| 午夜国产一区| 久久激情五月激情| 亚洲精品网址在线观看| 亚洲一级高清| 亚洲第一精品夜夜躁人人躁| 亚洲精品欧美日韩| 国产欧美日韩亚洲一区二区三区| 裸体素人女欧美日韩| 欧美日韩精品一区二区天天拍小说 | 欧美91大片| 亚洲欧美激情在线视频| 久久精品视频在线| 亚洲性图久久| 久久久91精品国产一区二区三区 | 看欧美日韩国产| 亚洲欧美一区二区三区在线| 久久精品国产久精国产爱| 一级日韩一区在线观看| 久久精品人人做人人综合 | 亚洲精品国产精品国产自| 亚洲综合精品四区| 一本一本a久久| 久久乐国产精品| 久久国产精品一区二区三区| 欧美区高清在线| 欧美二区不卡| 国语自产精品视频在线看| 日韩亚洲欧美中文三级| 亚洲精品久久久久久久久久久| 性欧美大战久久久久久久久| 亚洲一区二区视频| 欧美人与禽猛交乱配视频| 牛人盗摄一区二区三区视频| 国产伊人精品| 欧美在线综合视频| 久久久国产精品亚洲一区| 国产农村妇女毛片精品久久麻豆 | 久久在线视频在线| 久久理论片午夜琪琪电影网| 国产精品专区h在线观看| 一区二区免费在线播放| 洋洋av久久久久久久一区| 欧美成人一二三| 亚洲国产精品女人久久久| 永久免费毛片在线播放不卡| 国产亚洲日本欧美韩国| 蜜桃久久精品乱码一区二区| 国产亚洲aⅴaaaaaa毛片| 亚洲一区二区毛片| 亚洲午夜久久久久久尤物| 欧美日韩一区二区视频在线| 日韩一级免费| 亚洲一区二区在线看| 国产精品久久久久久久7电影 | 欧美在线日韩| 国产在线精品成人一区二区三区 | 久久精品水蜜桃av综合天堂| 久久综合精品国产一区二区三区| 好吊日精品视频| 老司机一区二区| 亚洲肉体裸体xxxx137| 一区二区三区精品在线 | 亚洲黄色在线| 欧美另类69精品久久久久9999| 亚洲精品一区二区三区福利| 亚洲一级黄色片| 国产午夜精品一区二区三区视频| 久久久久久有精品国产| 亚洲国产高清在线观看视频| 亚洲天堂久久| 国产一区在线视频| 欧美韩日一区| 亚洲综合二区| 亚洲国产激情| 亚洲欧美日韩在线高清直播| 国产一区二区三区在线播放免费观看| 久久久久久网址| 一本色道久久精品| 麻豆国产va免费精品高清在线| 日韩一区二区精品葵司在线| 国产精品日韩专区| 狼狼综合久久久久综合网| 一区二区三区 在线观看视频| 欧美夜福利tv在线| 亚洲激情一区二区三区| 国产精品福利在线观看网址| 久久深夜福利| 亚洲影院在线观看| 亚洲第一在线综合网站| 欧美在线影院| 欧美日韩精品一区视频| 最近中文字幕日韩精品 | 篠田优中文在线播放第一区| 亚洲全黄一级网站| 久久免费少妇高潮久久精品99| 一本久久a久久免费精品不卡| 国产日韩一级二级三级| 欧美精品在线一区二区| 欧美亚洲在线视频| 99精品视频免费| 亚洲大片一区二区三区| 久久精品视频在线观看| 亚洲校园激情| 亚洲精品女av网站| 亚洲第一精品电影| 国产尤物精品| 国产精品视频一区二区高潮| 欧美日韩国产限制| 国内一区二区三区在线视频| 欧美色一级片| 欧美经典一区二区| 久久蜜臀精品av| 欧美一二三视频|