Article: Q150431
Product(s): Microsoft C Compiler
Version(s): winnt:4.0,4.1,4.2
Operating System(s):
Keyword(s): kbole kbActiveX kbCOMt kbInplaceAct kbMetafile kbMFC kbVC400 kbVC410 kbVC420 kbGrpDSMFC
Last Modified: 03-AUG-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), used with:
- Microsoft Visual C++, 32-bit Editions, versions 4.0, 4.1
- Microsoft Visual C++, 32-bit Enterprise Edition, version 4.2
- Microsoft Visual C++, 32-bit Professional Edition, version 4.2
-------------------------------------------------------------------------------
SYMPTOMS
========
Enhanced metafiles do not appear in a non-active state in a OLE client when they
are used by the server to render the image. A call to CDC::PlayMetaFile() in the
OnDraw of the COleServerItem-derived class fails if it is passed an enhanced
metafile.
CAUSE
=====
When an OLE client application asks the server for a metafile representation of
the server data when it is in an inactive state or using Paste Special, the
application asks for it in a standard metafile format (CF_METAFILEPICT). The
server cannot respond to this request. However, most images can be rendered
without a problem using standard metafiles.
When COleClientItem::Draw calls the IViewObject2::Draw to render the cached
metafile representation, it needs to receive a metafile and not an enhanced
metafile. When COleServerItem::OnDraw is called, the DC passed is for a standard
metafile, not an enhanced metafile, so the rendering into the DCneeds to be
limited to items understood by a standard metafile.
RESOLUTION
==========
If your server is using enhanced metafiles, and the client is asking it to
render to an standard metafile, you need to make a conversion. You can use
GetEnhMetafileBits() to get each command of the enhanced metafile and copy the
commands to a standard metafile using SetMetafileBitsEx(), or you can use the
GetWinMetaFileBits() function to make the conversion.
STATUS
======
This behavior is by design.
MORE INFORMATION
================
Use the metafile format rather than the enhanced metafile. Check the
documentation on the features of enhanced metafiles to determine whether this
usage is appropriate for your application.
REFERENCES
==========
For more information on enhanced metafiles, see the "Enhanced-Format Metafiles"
section in Online Help.
Additional query words: 4.00 4.10 4.20
======================================================================
Keywords : kbole kbActiveX kbCOMt kbInplaceAct kbMetafile kbMFC kbVC400 kbVC410 kbVC420 kbGrpDSMFCATL
Technology : kbAudDeveloper kbMFC
Version : winnt:4.0,4.1,4.2
Issue type : kbprb
=============================================================================