本文主要是介绍《DirectShow开发指南》学习笔记_2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
COM编程基础
DirectX采用了COM标准。而DirectShow是一套完全基于COM的应用系统。要想深入学习DirectShow,掌握一些COM编程的基础知识是必不可少的。DirectShow应用程序实际上是一种COM组件的客户程序,只是COM组件的“使用”问题。这些问题包括如何创建COM组件、如何得到组件对象上的接口以及调用接口方法、如何管理组件对象(即需要熟悉COM的引用计数机制)等。下面的代码是最一般的步骤。
CoInitialize(NULL); //COM库初始化
//Do something
//...
IUnknown *pUnk = NULL;
IObject *pObject = NULL;
//创建组件对象
HRESULT hr = CoCreateInstance(CLSID_Object, CLSCTX_INPROC_SERVER, NULL, IID_IUnknown,(void**)&pUnk);
if (SUCCEEDED(hr))
{//查询得到组件对象上的接口hr = pUnk->QueryInterface(IID_IObject, (voidI**)&pObject);if (SUCCEEDED(hr)){//调用接口的方法pObject->SomeMethod();pObject->Release();}pUnk->Release();
}
//...
CoUninitialize(); //释放COM库使用的资源
Filter本身是一种COM组件,开发Filter牵涉到了COM组件的“实现”问题。COM本身只是一种规范,而不是实现。当使用C++来实现时,COM组件就是一个C++类,而接口都是纯虚类。可以用如下的C++代码来简单描述一个COM组件。<
这篇关于《DirectShow开发指南》学习笔记_2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!