vs中解決方案、項目、類及ATL的理解


解決方案,是對所有要完成工作的統稱,一般叫Solution。

項目,也叫工程,是將解決方案分成若干個模塊進行處理,一般叫做Project。添加項目就是添加工程。解決方案是所有項目的總和。

一個項目里面有各種文件,如圖片資源、音頻資源、視頻資源、ICO、MENU、SCROLLBAR等等。是一個獨立的包羅各種資源的集合,基本算是功能齊全完備,自給自足的小團體了。因為每個項目里面都有一個CWinApp類的全局變量theApp,這就注定項目是可以獨立啟動運行的

它唯一的缺點是小,是解決方案的一部分,能夠獨立完成特定工作的部件。相當於拖拉機上的發動機或者輪胎。形態完整,功能單一。

類,是完成項目的具體途徑,一個項目可以由若干類組成,一般叫做Class。

在ATL項目中:

解決方案還是解決方案。

項目就是所謂的類型庫,在IDL文件中有自己的GUID值。

類型庫是idl文件、COM類文件,.h文件,.cpp文件,.def文件的綜合體。也就是說類型庫里面包含了我們所要用的COM組件(COM類)。

而我們經常使用的word、excel的COM組件,都是通過他們的類型庫導入客戶程序的,然后我們才能通過CoCreateInstance()來構建組件對象。

所有簡單理解,類型庫是所有相關聯的COM組件生成的一個集合

類就是COM類,也稱為COM組件。CoCreateInstance()函數第一個參數就是COM類的GUID。

而且,ATL生成的DLL文件是以項目為單位的,生成的DLL文件名稱就是項目名+.dll。因此和MFC類似,ATL的類型庫也是一個獨立的能被客戶程序導入的dll文件,是對COM組件的打包

導入類型庫的意義:

我們要使用某個COM組件,首先導入包含它的類型庫。這是讓客戶程序知道我們要使用的COM組件在計算機中的哪個位置。

知道了類型庫的位置,通過組件類的CLSID值,就可以知道組件類的位置,通過接口的IID就可以找到這個接口了。

類型庫的意義:

簡單點講,類型庫就是COM類的容器,里面包含了若干COM類。

ProgID:

ProgID是在定義COM類時為類起的別名,方便程序員記住。命名規則為:ProjectName.ClassName.VersionNumber,即:

工程名(類型庫名稱).類名(COM類名稱).(版本號)

ProgID是個字符串,能夠與其映射的CLSID相互轉化:

CLSIDFromProgID()、CLSIDFromProgIDEx()
由 ProgID 得到 CLSID。沒什么好說的,你自己都可以寫,查注冊表貝

ProgIDFromCLSID()
由 CLSID 得到 ProgID,調用者使用完成后要釋放 ProgID 的內存

ATL作用:

ATL專門用來生成COM組件的,編譯后生成dll文件或者exe文件。

com組件和普通的dll文件有什么區別呢?

com組件優點:1.語言無關性;2.便於升級擴展;3.有很好的繼承封裝多態特性,即面向對象能力強;4.完成進程間,分布式功能;5.接口調用,便於組織。

com與普通dll區別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM