我正在尝试使用IDataObject的GetData方法从TOleContainer中提取位图。
我遇到了“Invalid FORMATETC stucture”错误。我做错了什么?
OleContainer1.CreateObject('Paint.Picture', false);
OleContainer1.OleObjectInterface.QueryInterface(IDataObject, DataObject);
DataObject使用DATADIR_GET
的EnumFormatEtc返回以下内容:
cfFormat, ptd, dwAspect, lIndex, tymed
CF_METAFILEPICT, nil, DVASPECT_CONTENT, -1, TYMED_MFPICT
CF_DIB, nil, DVASPECT_CONTENT, -1, TYMED_HGLOBAL or TYMED_ISTREAM
CF_BITMAP, nil, DVASPECT_CONTENT, -1, TYMED_HGLOBAL
但是当我执行以下操作时:
FormatEtc.cfFormat := CF_BITMAP;
FormatEtc.ptd := nil;
FormatEtc.dwAspect := DVASPECT_CONTENT;
FormatEtc.lIndex := -1;
FormatEtc.tymed := TYMED_HGLOBAL;
OleCheck(DataObject.GetData(FormatEtc, StorageMedium));
我遇到了“Invalid FORMATETC stucture”错误。我做错了什么?
此线程
中的建议,将媒体类型从TYMED_HGLOBAL
替换为TYMED_GDI
。 - TLama