【发布时间】:2026-01-30 21:20:08
【问题描述】:
我正在尝试使用 IDataObject 的 GetData 方法从 TOleContainer 中提取位图。
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));
我收到 无效的 FORMATETC 结构 错误。我做错了什么?
【问题讨论】:
-
尝试按照
this thread中的建议将媒体类型从TYMED_HGLOBAL替换为TYMED_GDI。 -
我已经试过了。同样的错误。
标签: delphi bitmap containers extract ole