C语言 封装CoCreateInstance方法 使用实例
时间: 2023-08-22 12:05:51 浏览: 164
CoCreateInstance方法是COM中用于创建COM对象的函数,其原型如下:
```c++
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID *ppv
);
```
其中,rclsid指定要创建的COM对象的CLSID;pUnkOuter指向外部的未知对象(通常为NULL);dwClsContext指定对象在何处运行;riid指定要查询的接口的IID;ppv指向返回的接口指针。
下面是一个简单的封装CoCreateInstance方法的例子:
```c++
#include <windows.h>
#include <objbase.h>
template<typename T>
inline HRESULT CreateInstance(REFCLSID clsid, T** pp)
{
return CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, __uuidof(T), (LPVOID*)pp);
}
int main()
{
// 创建Direct2D渲染器对象
ID2D1Factory* pFactory;
HRESULT hr = CreateInstance(CLSID_D2D1Factory, &pFactory);
if (SUCCEEDED(hr))
{
// 创建成功
// ...
pFactory->Release();
}
return 0;
}
```
该例子中创建了一个Direct2D渲染器对象,并使用了封装的CreateInstance方法。可以看到,该方法简化了CoCreateInstance方法的调用,使其更加便捷。
阅读全文