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
}