1. 程式人生 > >COM元件開發(六)——使用ATL開發COM元件

COM元件開發(六)——使用ATL開發COM元件

使用ATL開發COM元件

          使用ATL開發COM元件之前,要對幾個重要的類進行說明:

          CComModule

          這是ATL的中心模組類,它的作用有點像MFC中的CWinApp,但沒有後者那麼龐大。它和它匯出的類主要負責處理引用技術、在本地伺服器內的類廠註冊以及管理自動註冊和自動反註冊的登錄檔管理程式間的協調。若要建立程序內元件,只需直接使用CComModule,但如果是建立本地元件,則需要派生CComModule。

          CComObjectRoot 和 CComObjectRootEx

          他們的基本功能是處理元件的引用計數並對聚合提供支援,其中後者是一個類模板,模板引數是執行緒模型,而前者是後者取一個預設的執行緒模型的例項。

          CComCoClass

          該類主要負責類廠的定義,並提供兩個標準方法取得物件的CLSID和說明。

          CComObject

          它用於實現IUnknown介面,這個類比較特殊,因為它是一個模板類,需要從我們自定義的類繼承,模板引數是自定義類的類名,它的程式碼不需要我們編寫,由其內巨集自動生成。

          ATL建立的元件類必須從CComObjectRoot和CComCoClass派生出來,此外還必須從自定義元件類派生CComObject類。

在VS2008中開發ATL

          建立一個ATL專案,名稱叫ATLCOM,點選“確定”後,彈出專案配置嚮導窗體:

           保持預設設定,點選“完成”,建立一個程序內元件。

           然後,選擇選單“專案”——》“新增類”,選擇ATL簡單物件

          

         點選“新增”,然後按照自己的需要,定義元件類的簡稱,嚮導會自動補全其他資訊。

          點選下一步,進入ATL選項設定,這裡保持預設設定點選“完成”即可成功建立COM元件類。

         然後開啟類檢視,可以看到ATLCOM下新增了CSample類和ISample介面:

          現在,可以對ISample點選右鍵——》新增方法(新增屬性)來豐富介面了,然後在CSample內實現相應的的方法(屬性)即可。