我想使用IDataObject的GetData方法从TOleContainer
中提取位图。从TOleContainer中提取位图?
OleContainer1.CreateObject('Paint.Picture', false);
OleContainer1.OleObjectInterface.QueryInterface(IDataObject, DataObject);
EnumFormatEtc与DATADIR_GET
对数据对象返回如下:
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 stucture错误。我究竟做错了什么?
尝试从'TYMED_HGLOBAL'到'TYMED_GDI'更换介质类型的建议在['这个线程中](http://www.delphigroups.info/2/bc/272674.html)。 – TLama 2013-03-13 19:19:48
我已经试过了。同样的错误。 – forsajt 2013-03-13 20:02:02
这样做的另一种方法:http://stackoverflow.com/questions/2861008/how-to-extract-metafile-from-tolecontainer – 2013-03-13 21:33:45