C++基本问题,CComPtr pEm;是什么意思???

时间:2022-09-02 20:03:50
  CComPtr<IEnumMoniker> pEm;
这几天看directshow, 看ccapturevideo,里面很多这种<....>,本人C++菜鸟,以前也没记得有这个东西啊,还望高手指点一下

8 个解决方案

#1


C++Primer  类模板

#2


还有::SendMessage(hList, CB_ADDSTRING, 0,(LPARAM)str);  前面的::代表什么意思??

#3


模板

#4


指明是全局函数声明

#5


:: 这里表示使用的Win32 API函数

#6


引用 2 楼 zhangljz 的回复:
还有::SendMessage(hList, CB_ADDSTRING, 0,(LPARAM)str);  前面的::代表什么意思??

::全局作用域

#7


CComPtr <IEnumMoniker> pEm; 
智能指针,
省去了手动调用AddRef();和Release()...;的麻烦.
你可以直接把他当成CComPtr<T> 中T类型的借口使用,
你可以先了解一下com接口相关问题

#8


7楼说的对
IEnumMoniker是一种COM接口类;
你可以看看MSDN帮助
一般是这样,COM对象通过接口指针访问
CComPtr<ICreateDevEnum>pCrDevEnum;//定义设备系统枚举接口

pCrDevEnum.CoCreateInstance(CLSID_SystemDeviceEnum);//建立枚举对象,此时pCrDevEnum有返回值

CComPtr<IEnumMoniker>pEm;//类型枚举器接口

hr=pCrDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory,&pEm,0);

//pEm返回视频压缩filter的类型指针

IMoniker *pM;//取得每个视频压缩filter得名字,一般叫做FriendlyName

pEm->Next(1, &pM, &fetch)//返回每个类型

#1


C++Primer  类模板

#2


还有::SendMessage(hList, CB_ADDSTRING, 0,(LPARAM)str);  前面的::代表什么意思??

#3


模板

#4


指明是全局函数声明

#5


:: 这里表示使用的Win32 API函数

#6


引用 2 楼 zhangljz 的回复:
还有::SendMessage(hList, CB_ADDSTRING, 0,(LPARAM)str);  前面的::代表什么意思??

::全局作用域

#7


CComPtr <IEnumMoniker> pEm; 
智能指针,
省去了手动调用AddRef();和Release()...;的麻烦.
你可以直接把他当成CComPtr<T> 中T类型的借口使用,
你可以先了解一下com接口相关问题

#8


7楼说的对
IEnumMoniker是一种COM接口类;
你可以看看MSDN帮助
一般是这样,COM对象通过接口指针访问
CComPtr<ICreateDevEnum>pCrDevEnum;//定义设备系统枚举接口

pCrDevEnum.CoCreateInstance(CLSID_SystemDeviceEnum);//建立枚举对象,此时pCrDevEnum有返回值

CComPtr<IEnumMoniker>pEm;//类型枚举器接口

hr=pCrDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory,&pEm,0);

//pEm返回视频压缩filter的类型指针

IMoniker *pM;//取得每个视频压缩filter得名字,一般叫做FriendlyName

pEm->Next(1, &pM, &fetch)//返回每个类型