Creazione avanzata di metafile
Per creare un metafile avanzato, usare la funzione CreateEnhMetaFile , fornendo gli argomenti appropriati. Il sistema usa questi argomenti per mantenere le dimensioni dell'immagine, determinare se il metafile deve essere archiviato in un disco o in memoria e così via.
Per mantenere le dimensioni dell'immagine tra i dispositivi di output, CreateEnhMetaFile richiede la risoluzione del dispositivo di riferimento. Questo dispositivo di riferimento è il dispositivo in cui viene visualizzata per la prima volta l'immagine e il controller di dominio di riferimento è il contesto di dispositivo associato al dispositivo di riferimento. Quando si chiama la funzione CreateEnhMetaFile , è necessario fornire un handle che identifica il controller di dominio. È possibile ottenere questo handle chiamando la funzione GetDC o CreateDC . È anche possibile specificare NULL come handle per usare il dispositivo di visualizzazione corrente per il dispositivo di riferimento.
La maggior parte delle applicazioni archivia le immagini in modo permanente e quindi crea un metafile avanzato archiviato su un disco; Tuttavia, esistono alcune istanze quando questa operazione non è necessaria. Ad esempio, un'applicazione di elaborazione delle parole che fornisce funzionalità di disegno grafico potrebbe archiviare un grafico definito dall'utente in memoria come metafile avanzato e quindi copiare i bit di metafile avanzati dalla memoria nel file di documento dell'utente. Un'applicazione che richiede un metafile archiviato in modo permanente in un disco deve specificare il nome del file quando chiama CreateEnhMetaFile. Se non si specifica un nome di file, il sistema considera automaticamente il metafile come file temporaneo e lo archivia in memoria.
È possibile aggiungere una descrizione di testo facoltativa a un metafile contenente informazioni sull'immagine e sull'autore. Un'applicazione può visualizzare queste stringhe nella finestra di dialogo Apri file per fornire all'utente informazioni sul contenuto del metafile che consente di selezionare il file appropriato. Se un'applicazione include la descrizione del testo, deve fornire un puntatore alla stringa quando chiama CreateEnhMetaFile.
Quando CreateEnhMetaFile ha esito positivo, restituisce un handle che identifica un contesto di dispositivo metafile speciale. Un contesto di dispositivo metafile è univoco in quanto è associato a un file anziché a un dispositivo di output. Quando il sistema elabora una funzione GDI che ha ricevuto un handle in un contesto di dispositivo metafile, converte la funzione GDI in un record metafile avanzato e aggiunge il record alla fine del metafile avanzato.
Al termine di un'immagine e l'ultimo record viene aggiunto al metafile avanzato, l'applicazione può chiudere il file chiamando la funzione CloseEnhMetaFile . Questa funzione chiude ed elimina il contesto di dispositivo metafile speciale e restituisce un handle che identifica il metafile avanzato.
Per eliminare un metafile in formato avanzato o un handle metafile in formato avanzato, chiamare la funzione DeleteEnhMetaFile .