risorsa User-Defined

Un'istruzione di definizione della risorsa definita dall'utente definisce una risorsa che contiene dati specifici dell'applicazione. I dati possono avere qualsiasi formato e possono essere definiti come contenuto di un determinato file (se viene specificato il parametro filename ) o come serie di numeri e stringhe (se è specificato il blocco di dati non elaborati).

nameID typeID filename

Il nome file specifica il nome di un file contenente i dati binari della risorsa. Il contenuto del file viene incluso come risorsa. RC non interpreta in alcun modo i dati binari. È responsabilità del programmatore assicurarsi che i dati siano allineati correttamente per l'architettura del computer di destinazione.

Una risorsa definita dall'utente può anche essere definita completamente nello script della risorsa usando la sintassi seguente:

nameID typeID  {  raw-data  }

Parametri

Nameid

Nome univoco o intero senza segno a 16 bit che identifica la risorsa.

Typeid

Nome univoco o intero senza segno a 16 bit che identifica il tipo di risorsa. Se viene specificato un numero, deve essere maggiore di 255. I numeri da 1 a 255 sono riservati ai tipi di risorse esistenti e ridefinito in futuro.

Filename

Nome del file che contiene i dati della risorsa. Il parametro deve essere un nome di file valido; deve essere un percorso completo se il file non si trova nella directory di lavoro corrente.

dati non elaborati

Dati non elaborati costituiti da uno o più numeri interi o stringhe di caratteri. I numeri interi possono essere specificati in formato decimale, ottale o esadecimale. Per essere compatibile con Windows a 16 bit, i numeri interi vengono archiviati come valori WORD. È possibile archiviare un numero intero come valore DWORD qualificando l'intero con il suffisso "L".

Le stringhe sono racchiuse tra virgolette. RC non aggiunge automaticamente un carattere Null di terminazione a una stringa. Ogni stringa è una sequenza dei caratteri ANSI specificati, a meno che non venga qualificata come stringa di caratteri wide con il prefisso "L".

Il blocco di dati inizia su un limite DWORD e RC non esegue spaziatura interna o allineamento dei dati all'interno del blocco di dati non elaborati. È responsabilità del programmatore garantire il corretto allineamento dei dati all'interno del blocco.

Esempio

L'esempio seguente mostra diverse istruzioni definite dall'utente:

array   MYRES   data.res
14      300     custom.res
18 MYRES2
{
   "Here is an ANSI string\0",    // explicitly null-terminated 
   L"Here is a Unicode string\0", // explicitly null-terminated 
   1024,                          // integer, stored as WORD 
   7L,                            // integer, stored as DWORD 
   0x029a,                        // hex integer 
   0o733,                         // octal integer 
}