走進IE編程 (3)真的需要精通ATL嗎?

來源:互聯網
上載者:User

基本上IE編程是圍繞著ATL架構展開的, 所以, 我們不得不面對ATL說點什麼,
ATL是一個基於COM(元件物件模型)SDK的架構庫,如果你甚至連COM都不知道是什麼,建議先閱讀一些有關COM的技術書

籍(注1), 大致瞭解下COM出現的原因,目的,瞭解什麼是類廠及意義,COM對象是怎樣被建立和調用,以及引用計數

的維護等. 最後,寫幾個簡單的COM調用程式就可以了,如果你想更深入地理解COM,也不是短時期就能有所成效的,

幸運的是ATL架構庫就是最好的樣本.
ATL封裝了類廠管理類 - CComCoClass, 引用計數管理類 - CComObjectRootEx, 事實上, 當你在Visual Studio

可視化開發環境中, 添加一個簡單的COM對象類時, 你可以看到它是從CComCoClass, CComObjectRootEx派生的.

而最終COM對象的建立是由CCOMMoudle類完成的,具體根據全域靜態COM映射表,然後調用CComModule::Init

(...). 所以, 你再也不用原始的方法去建立類廠, 對全域和局部對象引用計數的管理, 所有這一切ATL的類架構

已經幫你完成了, 所有你需要做的就是從這些基類派生自已的COM對象類, 更為幸運的是VS整合式開發環境已經幫

助我們自動完成了初始代碼的建立, 一個典型的案例就是在你的工程中添加一個新的COM對象.

上面說了這麼多, 其是, 只是簡單地講了下COM和ATL的關係, 事實上, 要將晦澀的每個技術問題解釋的相當清楚

, 已超出本文的範圍, 附註推薦的書籍將協助你開啟這第一扇門(實際上你可能只需閱讀前面幾個章節, 瞭解一

下why > what > how就足夠了).

如果說ATL是IE編程的殼, 那麼IE事件的互動, 對IE介面的實現(implementation), 就是IE編程的血肉部分. 說

到事件互動, 就不得不談到IE是怎樣傳遞事件到你自定的事件接收器(sink), 這是由事件連接點(connection

point)完成的, 以後我們將進一步接觸這個問題. 另一方面, 對IE介面的實現也正是開發IE外掛程式的精髓, 諸如,

工具條(toolbar), 工具按鈕(button), 側邊欄(sidebar)等. 稍後, 我將一一講到.

總而言之, 精通ATL/COM是完全沒有必要的, 從表象上去大致理解下COM對象的建立,管理,事件接收,介面的實現

就可以了, 如果要深入理解COM在基於組件(component)的軟體開發中的優勢和好處, 建議你再去深入閱讀 < <COM

技術內幕>>(注1).

注1: < <COM技術內幕>> 潘愛民譯.
    < <ATL開發指南>>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.