麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 什么是COM和如何使用COM?

什么是COM和如何使用COM?

來源:千鋒教育
發布人:xqq
時間: 2023-10-11 20:12:19 1697026339

一、COM

COM(Component Object Model)是最近WIndows世界中最流行的TLA(three-letter acronym)。一些新技術的出現都是基于COM的。并且這些技術文檔中拋出了很多術語,比如 「COM對象」 、 「接口」 、 「服務器」 等等,但都假設您已熟悉COM的基本工作原理和使用方法。

COM到底是什么

簡單地說,COM是一種跨不同應用程序和語言共享二進制代碼的方法。這與c++方法不同,后者促進了源代碼的重用。ATL就是一個很好的例子。雖然源代碼級重用可以很好地工作,但它只適用于c++。它還引入了名稱沖突的可能性,更不用說在項目中擁有多個代碼副本而導致的工程膨脹和臃腫。

Windows允許使用dll在二進制級別上共享代碼。畢竟,這就是Windows應用程序的功能——重用kernel32.dll, user32.dll,等等。但是由于dll是寫在C接口上的,所以它們只能由C或理解C調用約定的語言使用。這就把共享的重擔放在了編程語言實現者身上,而不是DLL本身。

MFC通過MFC擴展dll引入了另一種二進制共享機制。但是這些限制更加嚴格——你只能從MFC應用程序中使用它們。

COM通過定義二進制標準解決了所有這些問題,這意味著COM指定二進制模塊(dll和exe)必須被編譯以匹配特定的結構。該標準還精確地指定了在內存中必須如何組織COM對象。二進制文件還必須不依賴于任何編程語言的任何特性(比如c++中的名稱裝飾)。一旦完成了這些,就可以很容易地從任何編程語言訪問模塊。二進制標準將兼容性的重擔壓在了生成二進制文件的編譯器上,這使得以后需要使用這些二進制文件的人更加容易。

內存中COM對象的結構恰好使用與c++虛函數相同的結構,這就是為什么許多COM代碼使用c++的原因。但是請記住,編寫模塊所用的語言是不相關的,因為生成的二進制文件可以被所有語言使用。

順便說一句,COM不是特定于win32的。理論上,它可以移植到Unix或任何其他操作系統。然而,我似乎從來沒有提到過COM以外的Windows世界。

使用COM對象

每種語言都有自己處理對象的方式。例如,在c++中,您可以在棧上創建它們,或者使用new動態地分配它們。因為COM必須是語言無關的,所以COM庫提供了自己的對象管理例程。COM和c++對象管理的比較如下:

「創建一個對象」

C++中,使用?「operator new」?或者在棧中創建一個對象COM中,調用COM庫的API創建

「刪除一個對象」

C++中,使用?「operator delete」?或者棧中的對象作用域消失時,釋放這個對象COM中,所有對象都保留自己的引用計數。調用者必須在調用者使用對象完成時告訴對象。當引用計數達到0時,COM對象從內存中釋放自己。

由此可見,對象的創建和銷毀這兩個階段缺一不可。當你創建一個COM對象時,你告訴COM庫你需要什么接口。如果對象被成功創建,COM庫返回一個指向所請求接口的指針。然后,您可以通過該指針調用方法,就像它是一個普通c++對象的指針一樣。

延伸閱讀:

二、dwFlags是什么

dwFlags確定Windows如何處理“復合”Unicode字符,即字母后跟變音符號。復合字符的一個例子是e。如果此字符位于代碼頁中指定的代碼頁中,則不會發生任何特殊情況。但是,如果它不在代碼頁中,Windows必須將其轉換為其他內容。 傳遞WC_COMPOSITECHECK使API檢查非映射的復合字符。傳遞WC_SEPCHARS使Windows將字符分成兩個部分,字母后跟變音符號,例如e ‘。傳遞WC_DISCARDNS會使Windows放棄變音符號。傳遞WC_DEFAULTCHAR將使Windows用lpDefaultChar參數中指定的“默認”字符替換復合字符。默認行為是WC_SEPCHARS。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 91caoprom| 国产欧美久久一区二区| 红色一级毛片| 放荡的女老板bd中文在线观看| 菠萝蜜视频入口| 久久亚洲私人国产精品va| 视频二区三区国产情侣在线| 四虎精品在线视频| 日本韩国欧美在线观看| 美女扒开屁股给男人看无遮挡| 怡红院www| 国产精品国色综合久久| 真实国产乱人伦在线视频播放| 嗯啊用力视频| 最近高清国语中文在线观看免费| 美女裸免费观看网站| 国产亚洲人成网站在线观看| 欧美性69式xxxx护士| 特黄特色大片免费| 里番本子侵犯肉全彩| 好男人好视频手机在线| 永久黄网站色视频免费观看| 亚洲欧美日韩在线不卡| 好爽~好大~不要| 男生和女生一起差差的视频30分| 国产私拍视频| 青青青国产免费线在| 看看屋在线看看电影| 美女被到爽羞羞漫画| 亚洲狠狠婷婷综合久久久久| 国产精品高清一区二区三区不卡| 放荡的女老板bd中文在线观看| 工囗番漫画全彩无遮挡| 午夜视频91| 两根硕大一起挤进小h| 亚洲国产欧洲综合997久久 | 韩国二级毛片免费播放| 再深点灬好舒服灬太大了添| 精品久久久久久久中文字幕| 国内国外精品影片无人区| 国产精品9999久久久久|