淺談ATL(一)

來源:互聯網
上載者:User

淺談ATL(一)

作為Atl/COM/Activex的小斑竹,很想提高我們板塊的人氣,寫點文章來吸引更多的想學COM的新手。天天都會看到一些新手對參數傳遞如自訂結構類型、數組、介面等參數類型出現的問題。這篇文章主要讓一些懼怕COM的新手知道該掌握什麼基礎知識,讓他們知道用什麼做COM組件最簡單,使他們對ATL有個大概的認識。

什麼是ATL

ATL(Active Template Library,Active Template Library)是專門用來開發COM組件的模板庫,當前最新版本是ATL7.1(隨.net發布),它修改了前版本ATL3.0(隨Visual C++6.0發布)一些BUG。

學習ATL需要必備什麼的背景知識?

1、  COM基礎。因為ATL是針對COM的,所以紮實的COM知識可以助你一臂之力。最好看看《COM本質論》。

2、  C++模板知識。

3、  Windows基礎知識,特別是Win32中有關視窗部分的知識。因為ATL對使用者介面(UI)封裝的很淺,往往建立一個表單和處理一個訊息要比MFC複雜得多。

4、  STL知識。ATL與STL在資料集合管理上有相通之處,如果你有STL做基礎,那麼理解ATL中的集合和枚舉應該是輕鬆自如。

怎麼看ATL?

有一定基礎C++程式員都用過STL,它使我們節省了不少時間它給我們封裝了vector、list、queue等,還有一些泛型演算法。以前我們有些人可能大多數都對它有所懷疑,可到現在他得到了我們的肯定。ATL對應於COM,雖然剛出來時BUG多多,現在atl7.1的BUG已經很少了!我們可以放心使用了。有些人肯定看過don box的《com本質論》,看完以後肯定會說原來寫個COM組件這麼麻煩呀!最主要的就是注意引用計數,還有那麼多分不清的GUID。甚至剛學COM的都不知道怎麼建立一個新的GUID,也不瞭解他們都是什麼用處。更別說還要建立個類廠,這東東可能把一批想學COM的嚇跑了,COM這方面的資料也很少,有幾本好書都是講理論知識想看著出做幾個例子簡直就是老虎吃天!如果用ATL建立一個組件或者控制項是很簡單的,用嚮導不到一分鐘就可以完成,哈哈!有一本《深入解析ATL》這本書值得你一看。有些人肯定會說MFC也可以快速的建立一個控制項,對的,如果你想深入到底層感覺還是多用ATL它會讓你更多的掌握COM的精髓所在。我現在用的是ATL7.1做組件,可以在vb6,vc7下用不用加任何.net庫的支援。

ATL的缺點在哪裡呢?

ATL的缺點在對表單的支援,它只封裝了一寫最基本的功能,幾乎所有控制項都要通過Win32視窗的api來完成。我就吃過苦頭,要建立一個combox那可能要浪費點時間了。不過這樣也能讓你體驗一下直接用api建立快感(靈活性很大)。如果你要做一個組件或者開發包最要不要帶介面除非不得已。不要表單的好處很多,一個是靈活性大,客戶可根據自己的風格編寫介面(客戶很討厭開發包或者控制項那些討厭的對話方塊和怪異按鈕等)。另一個好處就是,如果你的開發包中都是純的介面(沒有介面的介面),可以很方便在介面之間傳遞自訂結構。我看過很多別人寫的控制項(或者COM組件),調用一個介面方法十幾個參數,而且讓客戶要花費很長時間學習它的文檔(因為它們的參數莫名其妙,eg:Create(BSTR str))。我們做出來控制項或者COM開發包目的是給客戶用的,可是我們還要保證它用起來簡單靈活,盡量使客戶已看就能用的地步。我想很多人都願意用自訂結構吧!因為它可以在用戶端直接定義直接用。不過大家要注意了,傳遞結構的時候不管是[in]還是[out]屬性都要傳遞指標,原因很簡單interface 就可以說是 struct(當然它們時有區別的)。Interface是虛的而struct不是。

先寫到這裡,下篇會講點實際的東西。說的不對的地方請大蝦們提出來,我們共同探討。我的msn: wangweixing2003@hotmail。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.