Question:
????如何應用CUnknown和CFactory?
Answer:
1、????編寫實現組件的類
可以從CUnknown或其他從CUnknown派生的類派生出待實現的組件。
使用DECLARE_IUNKNOWN宏來實現委托Unknown接口。
在組件的構造函數中初始化CUnknown。
實現NondelegatingQueryInterface,在其中加入此組件支持而基類不支持的接口。對那些組件不支持的接口,可以調用相應的基類函數。
若需要在構造了組件之后進行其他的清理工作,可以重載FinalRelease函數,比如釋放那些指向被包容或聚合的組件的指針。
為組件實現一個靜態的CreateInstance函數。
實現組件支持的那些接口。
2、????對于同一個DLL中的其他組件,重復步驟1。
3、????編寫類廠。
建立一個文件,以包含全局CFactoryData數組g_FactoryDataArray。
定義g_FactoryDataArray數組,并用DLL中的所有組件信息填充此數組。
定義變量g_FactoryDataEntries,其中包含有數組g_FactoryDataArray中組件的個數。
4、????編寫一個定義DLL入口點的DEF文件。
5、????將上面所編寫的代碼同CUNKNOWN.CPP和CFACTORY.CPP一起編譯鏈接。