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一起编译链接。