Help and Support
 

powered byLive Search

PRB: Using Enhanced Metafiles in COleServerItem

Retired KB ArticleThis article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Article ID:150431
Last Review:November 21, 2006
Revision:3.1
This article was previously published under Q150431

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.

Back to the top

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.

Back to the top

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.

Back to the top

STATUS

This behavior is by design.

Back to the top

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.

Back to the top

REFERENCES

For more information on enhanced metafiles, see the "Enhanced-Format Metafiles" section in Online Help.

Back to the top


APPLIES TO
Microsoft Foundation Class Library 4.2, when used with:
  Microsoft Visual C++ 4.0 Standard Edition
  Microsoft Visual C++ 4.1 Subscription
  Microsoft Visual C++ 4.2 Enterprise Edition
  Microsoft Visual C++ 4.2 Professional Edition

Back to the top

Keywords: 
kbinplaceact kbmetafile kbprb KB150431

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by E-mail, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.