Clase CMetaFileDC

Implementa un metarchivo de Windows, que contiene una secuencia de comandos de la interfaz de dispositivo gráfico (GDI) que puede volver a consultar para crear la imagen o el texto que desee.

Sintaxis

class CMetaFileDC : public CDC

Miembros

Constructores públicos

Nombre Descripción
CMetaFileDC::CMetaFileDC Construye un objeto CMetaFileDC.

Métodos públicos

Nombre Descripción
CMetaFileDC::Close Cierra el contexto de dispositivo y crea un identificador de metarchivo.
CMetaFileDC::CloseEnhanced Cierra un contexto de dispositivo de metarchivo mejorado y crea un identificador de metarchivo mejorado.
CMetaFileDC::Create Crea el contexto de dispositivo de metarchivo de Windows y lo adjunta al objeto CMetaFileDC.
CMetaFileDC::CreateEnhanced Crea un contexto de dispositivo de metarchivo para un metarchivo de formato mejorado.

Comentarios

Para implementar un metarchivo de Windows, cree primero un objeto CMetaFileDC. Invoque el constructor CMetaFileDC y, después, llame a la función miembro Crear, que crea un contexto de dispositivo de metarchivo de Windows y lo adjunta al objeto CMetaFileDC.

Posteriormente, envíe al objeto CMetaFileDC la secuencia de comandos de GDI CDC que pretende que se reproduzca. Solo se pueden usar los comandos de GDI que crean resultados, tales como MoveTo y LineTo.

Después de enviar los comandos deseados al metarchivo, llame a la función miembro Close, que cierra los contextos de dispositivo de metarchivo y devuelve un identificador de metarchivo. Después, elimine el objeto CMetaFileDC.

CDC::PlayMetaFile puede usar el identificador de metarchivo para reproducir el metarchivo repetidamente. Las funciones de Windows como, por ejemplo, CopyMetaFile, también pueden manipular el metarchivo; lo hacen copiando un metarchivo en el disco.

Cuando el metarchivo ya no sea necesario, elimínelo de la memoria con la función de Windows DeleteMetaFile.

También puede implementar el objeto CMetaFileDC para que pueda controlar las llamadas de salida y las llamadas GDI de atributo, como GetTextExtent. Este metarchivo es más flexible y puede reutilizar más fácilmente el código de GDI general, que a veces se compone de una combinación de llamadas de salida y atributos. La clase CMetaFileDC hereda dos contextos de dispositivo, m_hDC y m_hAttribDC, de CDC. El contexto del dispositivo m_hDC controla todas las llamadas de salida de GDI CDC y el contexto del dispositivo m_hAttribDC controla todas las llamadas de atributo de GDI CDC. Normalmente, estos dos contextos de dispositivo hacen referencia al mismo dispositivo. En el caso de CMetaFileDC, el DC de atributo se establece en NULL de manera predeterminada.

Cree un segundo contexto de dispositivo que apunte a la pantalla, una impresora o un dispositivo que no sea un metarchivo y, después, llame a la función miembro SetAttribDC para asociar el nuevo contexto de dispositivo con m_hAttribDC. Las llamadas de GDI para obtener información ahora se dirigirán al elemento m_hAttribDC nuevo. Las llamadas de GDI de salida irán a m_hDC, que representa el metarchivo.

Para obtener más información sobre CMetaFileDC, consulte Contextos de dispositivo.

Jerarquía de herencia

CObject

CDC

CMetaFileDC

Requisitos

Encabezado: afxext.h

CMetaFileDC::Close

Cierra el contexto de dispositivo de metarchivo y crea un identificador de metarchivo de Windows que se puede usar para reproducir el metarchivo mediante la función miembro CDC::PlayMetaFile.

HMETAFILE Close();

Valor devuelto

Un valor HMETAFILE válido si la función es correcta; en caso contrario, es NULL.

Comentarios

El identificador de metarchivo de Windows también se puede usar para manipular el metarchivo con funciones de Windows como CopyMetaFile.

Elimine el metarchivo después de usarlo llamando a la función DeleteMetaFile de Windows.

CMetaFileDC::CloseEnhanced

Cierra un contexto de dispositivo de metarchivo mejorado y devuelve un identificador que identifica un metarchivo de formato mejorado.

HENHMETAFILE CloseEnhanced();

Valor devuelto

Si es correcto, un identificador de un metarchivo mejorado; en caso contrario, es NULL.

Comentarios

Una aplicación puede usar el identificador de metarchivo mejorado que devuelve esta función para realizar las tareas siguientes:

  • Mostrar una imagen almacenada en un metarchivo mejorado

  • Crear copias del metarchivo mejorado

  • Enumerar, editar o copiar registros individuales en el metarchivo mejorado

  • Recuperar una descripción opcional del contenido del metarchivo del encabezado de metarchivo mejorado

  • Recuperar una copia del encabezado del metarchivo mejorado

  • Recuperar una copia binaria del metarchivo mejorado

  • Enumerar los colores de la paleta opcional

  • Convertir un metarchivo de formato mejorado en un metarchivo de formato Windows

Cuando la aplicación ya no necesita el identificador de metarchivo mejorado, debe liberarlo llamando a la función DeleteEnhMetaFile de Win32.

CMetaFileDC::CMetaFileDC

Construya un objeto CMetaFileDC en dos pasos.

CMetaFileDC();

Comentarios

En primer lugar, llame a CMetaFileDC y luego a Create, que crea el contexto de dispositivo de metarchivo de Windows y lo adjunta al objeto CMetaFileDC.

CMetaFileDC::Create

Construya un objeto CMetaFileDC en dos pasos.

BOOL Create(LPCTSTR lpszFilename = NULL);

Parámetros

lpszFilename
Apunta a una cadena de caracteres terminada en null. Especifica el nombre de archivo del metarchivo que se va a crear. Si lpszFilename es NULL, se crea un metarchivo en memoria.

Valor devuelto

Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.

Comentarios

En primer lugar, llame al constructor CMetaFileDC y luego a Create, que crea el contexto de dispositivo de metarchivo de Windows y lo adjunta al objeto CMetaFileDC.

CMetaFileDC::CreateEnhanced

Crea un contexto de dispositivo para un metarchivo de formato mejorado.

BOOL CreateEnhanced(
    CDC* pDCRef,
    LPCTSTR lpszFileName,
    LPCRECT lpBounds,
    LPCTSTR lpszDescription);

Parámetros

pDCRef
Identifica un dispositivo de referencia para el metarchivo mejorado.

lpszFileName
Apunta a una cadena de caracteres terminada en null. Especifica el nombre de archivo del metarchivo mejorado que se va a crear. Si este parámetro es NULL, el metarchivo mejorado se basa en la memoria y su contenido se pierde cuando se destruye el objeto o cuando se llama a la función DeleteEnhMetaFile de Win32.

lpBounds
Apunta a una estructura de datos RECT o a un objeto CRect que especifica las dimensiones en unidades HIMETRIC (en incrementos de .01 milímetros) de la imagen que se va a almacenar en el metarchivo mejorado.

lpszDescription
Apunta a una cadena terminada en cero que especifica el nombre de la aplicación que ha creado la imagen, así como el título de la imagen.

Valor devuelto

Si es correcto, un identificador del contexto de dispositivo para el metarchivo mejorado; en caso contrario, es NULL.

Comentarios

Este DC se puede usar para almacenar una imagen independiente del dispositivo.

Windows usa el dispositivo de referencia que identifica el parámetro pDCRef para registrar la resolución y las unidades del dispositivo en el que ha aparecido originalmente una imagen. Si el parámetro pDCRef es NULL, usa el dispositivo de pantalla actual como referencia.

Los miembros izquierdo y superior de la estructura de datos RECT a los que apunta el parámetro lpBounds deben ser más pequeños que los miembros derecho e inferior, respectivamente. Los puntos a lo largo de los bordes del rectángulo se incluyen en la imagen. Si lpBounds es NULL, la interfaz de dispositivo gráfico (GDI) calcula las dimensiones del rectángulo más pequeño que puede incluir la imagen que dibuja la aplicación. El parámetro lpBounds debe proporcionarse siempre que sea posible.

La cadena a la que apunta el parámetro lpszDescription debe contener un carácter nulo entre el nombre de la aplicación y el de la imagen, y debe terminar con dos caracteres nulos; por ejemplo, "XYZ Graphics Editor\0Bald Eagle\0\0", donde \0 representa el carácter nulo. Si lpszDescription es NULL, no hay ninguna entrada correspondiente en el encabezado de metarchivo mejorado.

Las aplicaciones usan el DC que crea esta función para almacenar una imagen gráfica en un metarchivo mejorado. El identificador que este DC identifica se puede pasar a cualquier función de GDI.

Una vez que una aplicación almacena una imagen en un metarchivo mejorado, puede mostrar la imagen en cualquier dispositivo de salida; para ello, llame a la función CDC::PlayMetaFile. Al mostrar la imagen, Windows usa el rectángulo al que apunta el parámetro lpBounds y los datos de resolución del dispositivo de referencia para colocar y escalar la imagen. El contexto del dispositivo que devuelve esta función contiene los mismos atributos predeterminados asociados a cualquier DC nuevo.

Las aplicaciones deben usar la función GetWinMetaFileBits de Win32 para convertir un metarchivo mejorado al formato de metarchivo de Windows anterior.

El nombre de archivo del metarchivo mejorado debe usar la extensión .EMF.

Consulte también

CDC (clase)
Gráfico de jerarquías