看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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