Condividi tramite


Formati file di risorse

In questa sezione viene descritto il formato del file di risorse binario creato dal compilatore di risorse in base al contenuto del file di definizione della risorsa. Questo file in genere ha un'estensione res. Il linker riformatta il file con estensione res in un file oggetto risorsa e quindi lo collega al file eseguibile di un'applicazione.

Un file di risorse binario è costituito da una serie di voci di risorse concatenate. Ogni voce è costituita da un'intestazione di risorsa e dai dati per tale risorsa. Un'intestazione di risorsa è allineata a DWORD nel file ed è costituita dai seguenti elementi:

  • DWORD contenente le dimensioni dell'intestazione della risorsa
  • DWORD contenente le dimensioni dei dati delle risorse
  • Tipo di risorsa
  • Nome della risorsa
  • Informazioni aggiuntive sulle risorse

La struttura RESOURCEHEADER descrive il formato di questa intestazione. I dati per la risorsa seguono l'intestazione della risorsa e sono specifici di ogni tipo di risorsa. Alcune risorse usano anche una struttura di intestazione di gruppo specifica della risorsa per fornire informazioni su un gruppo di risorse.

Risorse di tabella acceleratore

Una tabella acceleratore è una voce di risorsa in un file di risorse. Non dispone di un'intestazione di gruppo. Una struttura ACCELTABLEENTRY descrive ogni voce nella tabella di acceleratore. Sono consentite più tabelle di acceleratore.

Risorse cursore e icona

Il sistema gestisce ogni icona e cursore come singolo file. Tuttavia, questi vengono archiviati nei file con estensione res e nei file eseguibili come gruppo di risorse icona RT_GROUP_ICON o un gruppo di risorse di cursore RT_GROUP_CURSOR . I formati di file delle risorse dell'icona e del cursore sono simili. Nel file con estensione res un'intestazione del gruppo di risorse segue tutti i singoli componenti del gruppo di icone o cursori.

L'intestazione del gruppo per le risorse dell'icona e del cursore è costituita da una struttura NEWHEADER più una o più strutture RESDIR . Esiste una struttura RESDIR per ogni icona o cursore. L'intestazione del gruppo contiene le informazioni necessarie per selezionare l'icona corretta o il cursore da visualizzare. Sia l'intestazione del gruppo che i dati ripetuti per ogni icona o cursore nel gruppo hanno una lunghezza fissa. Ciò consente all'applicazione di accedere casualmente alle informazioni.

Il formato di ogni icona RT_ICONo RT_CURSOR componente risorsa cursore è simile al formato del file .ico/cur. Ogni immagine viene archiviata in una struttura BITMAPINFO seguita dai bit bitmap indipendenti dal dispositivo di colore della maschera XOR dell'icona. I bit DIB monocromatici della maschera AND seguono i bit DIB del colore. Differenza significativa tra cursori e icone è che i cursori hanno una struttura LOCALHEADER con un hotspot inserito prima dei dati bitmap, mentre le icone non sono.

Poiché Windows Vista RT_ICON icona o RT_CURSOR risorsa cursore può contenere dati immagine compressi PNG.

Finestra di dialogo Risorse

Una finestra di dialogo è anche una voce di risorsa nel file di risorse. È costituito da una struttura di intestazione della finestra di dialogo DLGTEMPLATE e una struttura DLGITEMTEMPLATE per ogni controllo nella finestra di dialogo. Le strutture DLGTEMPLATEEX e DLGITEMTEMPLATEEX descrivono il formato delle risorse della finestra di dialogo estese.

Risorse carattere

I tipi di carattere vengono archiviati nel file di risorse come gruppo di risorse. I singoli tipi di carattere costituiscono un gruppo di caratteri. Istruzione FONT Statement resource definition (Definizione delle risorse dell'istruzione FONT ) nell'istruzione . Il file RC definisce ogni tipo di carattere. Ogni tipo di carattere della risorsa è costituito dal contenuto completo del file con estensione fnt correlato. Una struttura FONTGROUPHDR segue tutti i singoli componenti del tipo di carattere nel file res.

Le risorse del carattere non vengono aggiunte alle risorse di un'applicazione specifica. Vengono invece aggiunti normalmente ai file eseguibili con estensione fon. Questi file sono in genere DLL di sola risorsa anziché applicazioni.

Una risorsa di menu è costituita da una struttura MENUHEADER seguita da una o più strutture NORMALMENUITEM o POPUPMENUITEM , una per ogni voce di menu nel modello di menu. Le MENUEX_TEMPLATE_HEADER e le strutture MENUEX_TEMPLATE_ITEM descrivono il formato delle risorse di menu estese.

Risorse della tabella dei messaggi

Una tabella di messaggi è una risorsa contenente testo formattato per la visualizzazione come messaggio di errore o in una finestra di messaggio. La struttura principale di una risorsa di tabella dei messaggi è la struttura MESSAGE_RESOURCE_DATA .

Risorse della versione

La struttura principale in una risorsa di versione è la struttura VS_FIXEDFILEINFO . Altre strutture includono la struttura VarFileInfo per archiviare i dati delle informazioni sul linguaggio e StringFileInfo per informazioni sulla stringa definite dall'utente. Tutte le stringhe in una risorsa di versione sono in formato Unicode. Ogni blocco di informazioni è allineato a un limite DWORD .