我们已经知道了一个对象可以实现一个或多个接口,在上面对话框的案例中,Common Item Dialog 对象实现了 IFileOpenDialog 接口,这个接口定义显示和获取选择文件的基本方法。
COM 接口 还有一个规则在上面的信息中没有提及,这就是每个 COM 接口都必须直接的或者间接的继承一个叫做 IUnknown 的接口类。这个接口为 COM 组件提供一些底层的功能支持。
COM 组件 中的函数一般返回值都是 HRESULT 类型,该值代表着 COM 接口 调用的结果正确与否。HRESULT是一个32位的整型值。其中最高位代表着成功还是失败。0 表示成功,1 表示失败。
任何 Windows 程序在使用 COM 组件 前都必须调用 CoInitializeEx 函数初始化。使用 COM 接口 的每个线程都需要执行这个初始化步骤, CoInitializeEx 函数的声明如下。
如果你了解 C# 或者 Java 语言,接口就会是一个非常熟悉的概念。接口是一个对象上一组操作的集合,不涉及任何实现的细节,接口标志着方法和实现的分离。计算机中这种现象叫做解耦(decoupled)。