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 paramètre filename 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.
-
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 ne se trouve pas dans le répertoire de travail actuel.
-
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 compatibles avec Windows 16 bits, les entiers sont stockés sous forme de valeurs WORD. Vous pouvez stocker un entier en tant que valeur DWORD en qualifiant 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 de chaîne à caractères larges avec le préfixe « L ».
Le bloc de données commence sur une limite DWORD et RC n’effectue aucun remplissage ou alignement des données dans le bloc de données brutes . Il incombe au programmeur de s’assurer de l’alignement correct 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
}