ressource User-Defined
Une instruction de définition de ressource définie par l’utilisateur définit une ressource qui contient des données spécifiques à l’application. Les données peuvent avoir n’importe quel format et peuvent être définies en tant que contenu d’un fichier donné (si le nom de fichier paramètre est donné) ou en tant que série de nombres et de chaînes (si le bloc de données brutes est spécifié).
nameID typeID filename
Le nom de fichier spécifie le nom d’un fichier contenant les données binaires de la ressource. Le contenu du fichier est inclus en tant que ressource. RC n’interprète pas les données binaires de quelque manière que ce soit. Il incombe au programmeur de s’assurer que les données sont correctement alignées pour l’architecture de l’ordinateur cible.
Une ressource définie par l’utilisateur peut également être définie complètement dans le script de ressource à l’aide de la syntaxe suivante :
nameID typeID { raw-data }
Paramètres
-
nameID
-
Nom unique ou entier non signé 16 bits qui identifie la ressource.
-
typeID
-
Nom unique ou entier non signé 16 bits qui identifie le type de ressource. Si un nombre est donné, il doit être supérieur à 255. Les nombres 1 à 255 sont réservés aux types de ressources redéfinis existants et futurs.
-
nom de fichier
-
Nom du fichier qui contient les données de ressource. Le paramètre doit être un nom de fichier valide ; il doit s’agir d’un chemin d’accès complet si le fichier n’est pas dans le répertoire de travail actuel.
-
de données brutes
-
Données brutes composées d’un ou plusieurs entiers ou chaînes de caractères. Les entiers peuvent être spécifiés au format décimal, octal ou hexadécimal. Pour être compatible avec Windows 16 bits, les entiers sont stockés sous forme de valeurs WORD. Vous pouvez stocker un entier sous forme de valeur DWORD en qualifier l’entier avec le suffixe « L ».
Les chaînes sont placées entre guillemets. RC n’ajoute pas automatiquement un caractère null de fin à une chaîne. Chaque chaîne est une séquence des caractères ANSI spécifiés, sauf si vous la qualifiez comme chaîne à caractères larges avec le préfixe « L ».
Le bloc de données commence sur une limite de DWORD et RC n’effectue aucun remplissage ni alignement des données dans le bloc données brutes. Il incombe au programmeur de garantir l’alignement approprié des données au sein du bloc.
Exemple
L’exemple suivant montre plusieurs instructions définies par l’utilisateur :
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
}