※ 引述《chengcti (卡馬請出來面對!!)》之銘言:
: 其實 COM 只是一個資料結構而已
: class 只要繼承 IUnknow 即可
: 以及 export entry 給外面使用就可以
~~~~~部分恕刪~~~~~
: 繼承 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
關於這部分我有一個很大的疑問
在他書本提供的範例程式專案中
我並沒有發現他將CPlayer類別成為一個DLL
在我的眼中他很可能就只是單純的繼承IMFAsyncCallback
然後再去實作其他必要的方法
這樣的情況下 這個class還算是一個COM嗎
還是說她就是單純的類別
另外在實作方法方面
應該是要重載函式吧
不過我在class中加入函式後
卻會發生連結錯誤
諸多疑問在我心中無法解答
還請各位先進可以幫我一個忙
謝謝
: 轉型成他指定的, 所以你只要把該 interface 所要的 method, property
: 即可, 把他想成 plug 就行了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.158.56