我正在使用VC ++。
IPicture
提供多种功能,例如get_Handle
,Render
和SaveAsFile
。它很容易使用。
IPictureDisp
继承自IDispatch
,因此它只提供invoke
方法。这不友好。
现在我得到一个ocx
,它只返回IPictureDisp
个对象。那么有没有一种方法可以直接将IPictureDisp
转换为IPicture
?我对ATL/COM
没有多少经验。
答案 0 :(得分:3)
正如MSDN所述:
OLE实现
[...]系统提供了图片对象的标准实现。它的主要接口是IPicture和IPictureDisp。使用OleCreatePictureIndirect创建一个图片对象,并支持IPicture和IPictureDisp接口。
如果支持两种界面,IPictureDisp
您可以通过常规IPicture
查询QueryInterface
:
IPictureDisp* pPictureDisp = ...
CComQIPtr<IPicture> pPicture = pPictureDisp;
请注意,如果它不起作用且IPicture
无法直接使用,您可以IPictureDisp::Invoke
使用DISPID_PICT_HANDLE
,DISPID_PICT_RENDER
来访问属性/方法。< / p>