[1/2] ole32: Accept TYMED_FILE as a possible source of CF_METAFILEPICT format.
Dmitry Timoshkov
dmitry at baikal.ru
Fri Oct 30 01:07:51 CDT 2015
Huw Davies <huw at codeweavers.com> wrote:
> > diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c
> > index caabd10..3db0edf 100644
> > --- a/dlls/ole32/datacache.c
> > +++ b/dlls/ole32/datacache.c
> > @@ -285,7 +285,7 @@ static DataCacheEntry *DataCache_GetEntryForFormatEtc(DataCache *This, const FOR
> > static HRESULT check_valid_clipformat_and_tymed(CLIPFORMAT cfFormat, DWORD tymed)
> > {
> > if (!cfFormat || !tymed ||
> > - (cfFormat == CF_METAFILEPICT && tymed == TYMED_MFPICT) ||
> > + (cfFormat == CF_METAFILEPICT && (tymed == TYMED_MFPICT || tymed == TYMED_FILE)) ||
> > (cfFormat == CF_BITMAP && tymed == TYMED_GDI) ||
> > (cfFormat == CF_DIB && tymed == TYMED_HGLOBAL) ||
> > (cfFormat == CF_ENHMETAFILE && tymed == TYMED_ENHMF))
>
> This should be easy enough to test. Create a stand-alone data cache
> ( using CreateDataCache() ), then call IOleCache_Cache with the
> relevant fmtetc.
Ufortunately it's not that simple. IOleCache_Cache() refuses to accept
FORMATETC for CF_METAFILEPICT with medium set to TYMED_FILE, and both
IOleCache_SetData() and IOleObject_SetData() don't accept STGMEDIUM set
to TYMED_FILE either (with properly initialized lpszFileName pointing to
a valid metafile). I have no idea how an existing storage may have medium
set to TYMED_FILE, or how to set it for testing purposes besides manually
patching the storage, any ideas?
--
Dmitry.
More information about the wine-devel
mailing list