Classe CMetaFileDC
Implementa un metafile di Windows che contiene una sequenza di comandi GDI (Graphics Device Interface) che è possibile riprodurre per creare un'immagine o un testo desiderato.
Sintassi
class CMetaFileDC : public CDC
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CMetaFileDC::CMetaFileDC | Costruisce un oggetto CMetaFileDC . |
Metodi pubblici
Nome | Descrizione |
---|---|
CMetaFileDC::Close | Chiude il contesto del dispositivo e crea un handle metafile. |
CMetaFileDC::CloseEnhanced | Chiude un contesto di dispositivo metafile avanzato e crea un handle metafile avanzato. |
CMetaFileDC::Create | Crea il contesto del dispositivo metafile di Windows e lo collega all'oggetto CMetaFileDC . |
CMetaFileDC::CreateEnhanced | Crea un contesto di dispositivo metafile per un metafile in formato avanzato. |
Osservazioni:
Per implementare un metafile di Windows, creare prima di tutto un CMetaFileDC
oggetto . Richiamare il CMetaFileDC
costruttore, quindi chiamare la funzione Crea membro, che crea un contesto di dispositivo metafile di Windows e la collega all'oggetto CMetaFileDC
.
Inviare quindi l'oggetto CMetaFileDC
alla sequenza di comandi GDI CDC che si intende riprodurre. È possibile usare solo i comandi GDI che creano output, ad esempio MoveTo
e LineTo
.
Dopo aver inviato i comandi desiderati al metafile, chiamare la Close
funzione membro, che chiude i contesti del dispositivo metafile e restituisce un handle metafile. Eliminare quindi l'oggetto CMetaFileDC
.
CDC::P layMetaFile può quindi usare l'handle metafile per riprodurre ripetutamente il metafile. Il metafile può essere modificato anche da funzioni di Windows, ad esempio CopyMetaFile, che copia un metafile su disco.
Quando il metafile non è più necessario, eliminarlo dalla memoria con la funzione Windows DeleteMetaFile .
È anche possibile implementare l'oggetto CMetaFileDC
in modo che possa gestire sia le chiamate di output che le chiamate GDI degli attributi, GetTextExtent
ad esempio . Un metafile di questo tipo è più flessibile e può riutilizzare più facilmente il codice GDI generale, che spesso è costituito da una combinazione di chiamate di output e attributi. La CMetaFileDC
classe eredita due contesti di dispositivo e m_hDC
m_hAttribDC
, da CDC. Il contesto di m_hDC
dispositivo gestisce tutte le chiamate di output GDI CDC e il contesto di m_hAttribDC
dispositivo gestisce tutte le chiamate di attributo GDI CDC. In genere, questi due contesti di dispositivo fanno riferimento allo stesso dispositivo. Nel caso di , il controller di CMetaFileDC
dominio dell'attributo è impostato su NULL per impostazione predefinita.
Creare un secondo contesto di dispositivo che punti allo schermo, a una stampante o a un dispositivo diverso da un metafile, quindi chiamare la SetAttribDC
funzione membro per associare il nuovo contesto di dispositivo a m_hAttribDC
. Le chiamate GDI per le informazioni verranno ora indirizzate al nuovo m_hAttribDC
oggetto . Le chiamate GDI di output andranno a m_hDC
, che rappresenta il metafile.
Per altre informazioni su CMetaFileDC
, vedere Contesti di dispositivo.
Gerarchia di ereditarietà
CMetaFileDC
Requisiti
Intestazione: afxext.h
CMetaFileDC::Close
Chiude il contesto del dispositivo metafile e crea un handle metafile di Windows che può essere usato per riprodurre il metafile usando la funzione membro CDC::P layMetaFile .
HMETAFILE Close();
Valore restituito
HMETAFILE valido se la funzione ha esito positivo; in caso contrario NULL.
Osservazioni:
L'handle metafile di Windows può essere usato anche per modificare il metafile con funzioni di Windows, ad esempio CopyMetaFile.
Eliminare il metafile dopo l'uso chiamando la funzione DeleteMetaFile di Windows.
CMetaFileDC::CloseEnhanced
Chiude un contesto di dispositivo metafile avanzato e restituisce un handle che identifica un metafile in formato avanzato.
HENHMETAFILE CloseEnhanced();
Valore restituito
Handle di un metafile avanzato, se riuscito; in caso contrario NULL.
Osservazioni:
Un'applicazione può usare l'handle di metafile avanzato restituito da questa funzione per eseguire le attività seguenti:
Visualizzare un'immagine archiviata in un metafile avanzato
Creare copie del metafile avanzato
Enumerare, modificare o copiare singoli record nel metafile avanzato
Recuperare una descrizione facoltativa del contenuto del metafile dall'intestazione enhanced-metafile
Recuperare una copia dell'intestazione enhanced-metafile
Recuperare una copia binaria del metafile avanzato
Enumerare i colori nella tavolozza facoltativa
Convertire un metafile in formato avanzato in un metafile in formato Windows
Quando l'applicazione non necessita più dell'handle metafile avanzato, deve rilasciare l'handle chiamando la funzione Win32 DeleteEnhMetaFile
.
CMetaFileDC::CMetaFileDC
Costruire un CMetaFileDC
oggetto in due passaggi.
CMetaFileDC();
Osservazioni:
Prima di tutto, chiamare , quindi chiamare CMetaFileDC
Create
, che crea il contesto del dispositivo metafile di Windows e lo collega all'oggetto CMetaFileDC
.
CMetaFileDC::Create
Costruire un CMetaFileDC
oggetto in due passaggi.
BOOL Create(LPCTSTR lpszFilename = NULL);
Parametri
lpszFilename
Punta a una stringa di caratteri con terminazione Null. Specifica il nome file del metafile da creare. Se lpszFilename è NULL, viene creato un nuovo metafile in memoria.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Prima di tutto, chiamare il costruttore CMetaFileDC
, quindi chiamare Create
, che crea il contesto del dispositivo metafile di Windows e lo collega all'oggetto CMetaFileDC
.
CMetaFileDC::CreateEnhanced
Crea un contesto di dispositivo per un metafile in formato avanzato.
BOOL CreateEnhanced(
CDC* pDCRef,
LPCTSTR lpszFileName,
LPCRECT lpBounds,
LPCTSTR lpszDescription);
Parametri
pDCRef
Identifica un dispositivo di riferimento per il metafile avanzato.
lpszFileName
Punta a una stringa di caratteri con terminazione Null. Specifica il nome file per il metafile avanzato da creare. Se questo parametro è NULL, il metafile avanzato è basato sulla memoria e il relativo contenuto viene perso quando l'oggetto viene eliminato definitivamente o quando viene chiamata la funzione Win32 DeleteEnhMetaFile
.
lpBounds
Punta a una struttura di dati RECT o a un oggetto CRect che specifica le dimensioni in unità HIMETRIC (in incrementi di 01 millimetri) dell'immagine da archiviare nel metafile avanzato.
lpszDescription
Punta a una stringa con terminazione zero che specifica il nome dell'applicazione che ha creato l'immagine, nonché il titolo dell'immagine.
Valore restituito
Handle del contesto di dispositivo per il metafile avanzato, se riuscito; in caso contrario NULL.
Osservazioni:
Questo controller di dominio può essere usato per archiviare un'immagine indipendente dal dispositivo.
Windows usa il dispositivo di riferimento identificato dal parametro pDCRef per registrare la risoluzione e le unità del dispositivo in cui è stata originariamente visualizzata un'immagine. Se il parametro pDCRef è NULL, usa il dispositivo di visualizzazione corrente per riferimento.
I membri sinistro e superiore della RECT
struttura dei dati a cui punta il parametro lpBounds devono essere rispettivamente inferiori rispetto ai membri destro e inferiore. I punti lungo i bordi del rettangolo sono inclusi nell'immagine. Se lpBounds è NULL, l'interfaccia GDI (Graphics Device Interface) calcola le dimensioni del rettangolo più piccolo che può racchiudere l'immagine disegnata dall'applicazione. Il parametro lpBounds deve essere fornito laddove possibile.
La stringa a cui punta il parametro lpszDescription deve contenere un carattere Null tra il nome dell'applicazione e il nome dell'immagine e deve terminare con due caratteri Null, ad esempio "Editor grafica XYZ\0Bald Eagle\0\0", dove \0 rappresenta il carattere Null. Se lpszDescription è NULL, non esiste alcuna voce corrispondente nell'intestazione enhanced-metafile.
Le applicazioni usano il controller di dominio creato da questa funzione per archiviare un'immagine grafica in un metafile avanzato. L'handle che identifica questo controller di dominio può essere passato a qualsiasi funzione GDI.
Dopo che un'applicazione archivia un'immagine in un metafile avanzato, può visualizzare l'immagine in qualsiasi dispositivo di output chiamando la CDC::PlayMetaFile
funzione . Quando si visualizza l'immagine, Windows usa il rettangolo a cui punta il parametro lpBounds e i dati di risoluzione dal dispositivo di riferimento per posizionare e ridimensionare l'immagine. Il contesto di dispositivo restituito da questa funzione contiene gli stessi attributi predefiniti associati a qualsiasi nuovo controller di dominio.
Le applicazioni devono usare la funzione Win32 GetWinMetaFileBits
per convertire un metafile avanzato nel formato precedente del metafile di Windows.
Il nome file per il metafile avanzato deve usare . Estensione EMF.