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
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.