Condividi tramite


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, GetTextExtentad 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_hDCm_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 CMetaFileDCdominio 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_hAttribDCoggetto . 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à

CObject

CDC

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

Vedi anche

Classe CDC
Grafico della gerarchia