看板 C_and_CPP 關於我們 聯絡資訊
其實 COM 只是一個資料結構而已 class 只要繼承 IUnknow 即可 以及 export entry 給外面使用就可以 我研究 COM/ActiveX 十幾年, 沒 .NET 時還要被 thread 卡死 為什麼我說 COM 是 Microsoft 的產品! 最早的時候是 CORBA, 可以做到軟體元件的境界 Microsoft 自己也搞一個 COM 用來跟 CORBA 對抗 為了跨平台, 就搞一個 DCOM, (只能跨 microsoft 平台) 不像 CORBA 可跨 multi-platform. 原本 Microsoft 要把他的所有產品全部都納入 COM 中 不過對於設計師來說實在太難寫, 後期才開發 .NET COM 就有點半腰折, 不過 COM 有它的好處, 例如很多人拿它當作 plugin component 繼承 IMFAsyncCallback 之外, 並且 Implement 必要的 method platform 會由你 createinstance 之後 透過 QueryInterface() 轉成他要的 IMFAsyncCallback Microsoft platform 現在大概剩下 System 及 Media 相關 會用到 COM 之外, 其他已經很少見了 可以去看 COM 本質論, 裡面是由 C & DLL, step by step 架出來 現在有很多工具可以幫你做好 tempalte 如果你是要做 directshow, 建議還是用 ATL 包括 IIS Filter 也是由 ATL 比較 light, 效率比較好 MFC 不建議, .NET 更不建議. 尤其是 loading 過大的系統 .NET 只是把以前被人詬病的 COM 難寫要死改成好寫 相對的會失去一些效能等東西 回到你的問題, 你要讓 platform 得到一個 instance 通常是你要先成為一個 DLL, 此時的 pointer 可透過 queryinterface 轉型成他指定的, 所以你只要把該 interface 所要的 method, property 即可, 把他想成 plug 就行了 ※ 引述《ThomasHuang (命賤如草)》之銘言: : 我之前的問題 回應的人很少 : 我想應該是我問題解釋的不清楚吧 : 這邊我想再問一下 : 我有個class是從IMFAsyncCallback繼承而來的 : 這樣的繼承 : 只有在COM技術裡可以實現嗎 : 還是說 : 一般的Class也可以這樣繼承 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.139.242 ※ 編輯: chengcti 來自: 114.34.139.242 (08/12 22:18)
james732:有沒有COM關於[應用]的資料呢? 08/12 23:20
james732:看了幾本關於原理的書還是不知道怎麼用 orz 08/12 23:20
WPC001:其實我想要說... "COM他不是一個資料結構..." XD XD 08/14 01:26