Partager via


Guide pratique pour gérer les symboles

Lorsque vous créez une ressource ou un objet de ressource, l’environnement de développement lui attribue un nom de symbole par défaut, par exemple IDD_DIALOG1. Vous pouvez utiliser l’Fenêtre Propriétés pour modifier le nom de symbole par défaut ou pour modifier le nom de n’importe quel symbole déjà associé à une ressource.

Pour les symboles associés à une seule ressource, vous pouvez également utiliser la fenêtre Propriétés pour modifier la valeur du symbole. Vous pouvez utiliser la boîte de dialogue Symboles de ressource pour modifier la valeur des symboles qui ne sont pas actuellement affectés à une ressource.

Normalement, toutes les définitions de symboles sont enregistrées dans Resource.h. Toutefois, vous devrez peut-être changer ce nom de fichier Include pour pouvoir, par exemple, utiliser plusieurs fichiers de ressources dans le même répertoire.

Remarque

Si votre projet ne contient pas encore de fichier .rc, consultez Guide pratique pour créer des ressources.

Restrictions relatives au nom de symbole

Les restrictions relatives aux noms de symboles sont les suivantes :

  • Tous les symboles doivent être uniques dans l’étendue de l’application pour empêcher les définitions de symboles en conflit dans les fichiers d’en-tête.

  • Les caractères valides pour un nom de symbole incluent A-Z, a-z, 0-9 et les traits de soulignement (_).

  • Les noms de symboles ne peuvent pas commencer par un nombre et sont limités à 247 caractères.

  • Les noms de symboles ne peuvent pas contenir d’espaces.

  • Les noms de symboles ne respectent pas la casse, mais la casse de la première définition de symbole est conservée.

    Le fichier d'en-tête qui définit les symboles est utilisé par le compilateur/l'éditeur de ressources, ainsi que par le ou les programmes C++ pour faire référence aux ressources définies dans un fichier de ressources. Quand deux noms de symboles diffèrent uniquement par la casse, le programme C++ identifie deux symboles distincts alors que le compilateur/l'éditeur de ressources identifie les deux noms comme faisant référence à un symbole unique.

Remarque

Si vous ne suivez pas le schéma de nom de symbole standard (ID*_[mot clé]) décrit ci-dessous et que votre nom de symbole se présente comme un mot clé connu du compilateur de script de ressource, la tentative de génération du fichier de script de ressource entraîne une génération d’erreurs apparemment aléatoire difficile à diagnostiquer. Pour éviter cela, respectez le modèle d'affectation de noms standard.

Les noms de symboles comportent des préfixes descriptifs qui indiquent le genre de ressource ou d'objet qu'ils représentent. Ces préfixes descriptifs commencent par la combinaison de texte ID. La bibliothèque MFC (Microsoft Foundation Class) utilise les conventions d’affectation de noms de symboles indiquées dans le tableau suivant :

Catégorie Préfixe Utilisation
Ressources IDR_, IDD_, IDC_, IDI_, IDB_ Accélérateur ou menu (et ressources associées ou personnalisées), boîte de dialogue, curseur, icône, bitmap
Éléments de menu ID_ Élément de menu
Commandes ID_ Commande
Contrôles et fenêtres enfants IDC_ Contrôler
Chaînes IDS_ Chaîne dans la table de chaînes
MFC AFX_ Réservé aux symboles MFC prédéfinis

Pour modifier un nom de symbole (ID)

  1. Dans l’affichage des ressources, sélectionnez la ressource.

  2. Dans la fenêtre Propriétés , tapez un nouveau nom de symbole ou sélectionnez-le dans la liste des symboles existants dans la zone ID .

    Si vous tapez un nouveau nom de symbole, une valeur est automatiquement attribuée.

Remarque

Vous pouvez utiliser la boîte de dialogue Symboles de ressource pour modifier les noms des symboles qui ne sont pas actuellement affectés à une ressource.

Restrictions relatives à la valeur d'un symbole

Une valeur de symbole peut être n’importe quel entier exprimé de la manière normale pour #define les directives de préprocesseur. Voici quelques exemples de valeurs de symboles :

18
4001
0x0012
-3456

Les valeurs de symboles pour les ressources telles que les accélérateurs, les bitmaps, les curseurs, les boîtes de dialogue, les icônes, les menus, les tables de chaînes et les informations de version doivent être décimales comprises entre 0 et 32 767, mais ne peuvent pas être hexadécimales. Les valeurs de symboles de certaines ressources, telles que les contrôles de boîte de dialogue ou des chaînes spécifiques de la table de chaînes, peuvent être comprises entre 0 et 65 534 ou -32 768 et 32 767. Pour plus d’informations sur les plages de numéros, consultez TN023 : Ressources MFC standard.

Les symboles de ressource sont des nombres 16 bits. Vous pouvez les entrer comme signés ou non signés, mais ils sont utilisés en interne comme entiers non signés, de sorte que les nombres négatifs seront convertis en leur valeur positive correspondante.

Voici quelques limitations des valeurs de symboles :

  • L'environnement de développement Visual Studio et MFC utilisent certaines plages de nombres à des fins spéciales. Tous les nombres avec le bit le plus significatif défini (de -32 768 à -1 ou de 32 768 à 65 534, en fonction du signe) sont réservés par MFC.

  • Vous ne pouvez pas définir de valeur de symbole à l’aide d’autres chaînes de symboles. Par exemple, la définition de symbole suivante n’est pas prise en charge :

    #define IDC_MYEDIT  IDC_OTHEREDIT  //not supported
    
  • Vous ne pouvez pas utiliser de macros de préprocesseur avec des arguments comme définitions de valeur. L’exemple suivant n’est pas une expression valide, quelle que soit l’évaluation ID au moment de la compilation :

    #define   IDD_ABOUT  ID(7) //not supported
    
  • Votre application peut comporter un fichier existant contenant des symboles définis par des expressions.

Pour modifier une valeur de symbole

  1. Dans l’affichage des ressources, sélectionnez la ressource.

  2. Dans la fenêtre Propriétés , tapez le nom du symbole suivi d’un signe égal et d’un entier dans la zone ID , par exemple :

    IDC_EDITNAME=5100
    

    La nouvelle valeur est stockée dans le fichier d'en-tête de symbole la prochaine fois que vous enregistrez le projet. Seul le nom du symbole reste visible dans la zone ID et le signe et la valeur égaux ne sont pas affichés une fois qu’ils sont validés.

Modifier ou supprimer des symboles

Dans la boîte de dialogue Symboles de ressource, vous pouvez modifier ou supprimer des symboles existants qui ne sont pas déjà affectés à une ressource ou un objet.

Pour modifier un symbole non assigné

  1. Dans la zone Nom , sélectionnez le symbole non attribué, puis choisissez Modifier.

  2. Modifiez le nom ou la valeur du symbole dans les zones fournies dans la boîte de dialogue Modifier le symbole .

Remarque

Pour modifier un symbole affecté à une ressource ou un objet, vous devez utiliser la fenêtre Éditeur de ressources ou Propriétés .

Pour supprimer un symbole non assigné (non utilisé)

Dans la boîte de dialogue Symboles de ressource, sélectionnez le symbole à supprimer, puis choisissez Supprimer.

Remarque

Avant de supprimer un symbole inutilisé dans un fichier de ressources, assurez-vous qu’il n’est pas utilisé ailleurs dans le programme ou par les fichiers de ressources inclus au moment de la compilation.

Inclure les symboles

La première fois que l'environnement de développement lit un fichier de ressources créé par une autre application, il marque tous les fichiers d'en-tête inclus en lecture seule. Bien que vous puissiez utiliser la boîte de dialogue Inclure des ressources pour ajouter des fichiers d’en-tête de symboles en lecture seule supplémentaires.

Si vous envisagez de partager des fichiers de symboles entre plusieurs projets, vous pouvez utiliser les définitions de symbole en lecture seule.

Vous pouvez également utiliser des fichiers de symboles inclus quand vous disposez de ressources avec des définitions de symbole qui utilisent des expressions au lieu d'entiers simples pour définir la valeur du symbole. Par exemple :

#define   IDC_CONTROL1 2100
#define   IDC_CONTROL2 (IDC_CONTROL1+1)

L'environnement interprète correctement ces symboles calculés tant que les conditions suivantes sont respectées :

  • Les symboles calculés sont placés dans un fichier de symboles en lecture seule.

  • Votre fichier de ressources contient des ressources auxquelles ces symboles calculés sont déjà assignés.

  • Une expression numérique est attendue.

Remarque

Si une chaîne ou une expression numérique est attendue, l'expression n'est pas évaluée.

Pour inclure des symboles partagés (en lecture seule) dans votre fichier de ressources

  1. Dans l’affichage des ressources, cliquez avec le bouton droit sur votre fichier .rc , puis sélectionnez Éléments de ressource inclus.

  2. Dans la zone directives de symbole en lecture seule, utilisez la #include directive du compilateur pour spécifier le fichier dans lequel vous souhaitez conserver les symboles en lecture seule.

    N’appelez pas le fichier, car il s’agit du nom de fichier Resource.hnormalement utilisé par le fichier d’en-tête de symbole principal.

    Remarque

    Ce que vous tapez dans la zone de directives de symbole en lecture seule est inclus dans le fichier de ressources exactement comme vous le tapez. Vérifiez que ce que vous tapez ne contient aucune erreur d'orthographe ou de syntaxe.

    Utilisez la zone de directives de symbole en lecture seule pour inclure des fichiers avec des définitions de symboles uniquement. N’incluez pas de définitions de ressources, sinon les définitions de ressources en double seront créées lorsque le fichier est enregistré.

  3. Placez les symboles dans le fichier spécifié.

    Les symboles des fichiers inclus de cette façon sont évalués chaque fois que vous ouvrez votre fichier de ressources, mais ils ne sont pas remplacés sur le disque lorsque vous enregistrez votre fichier.

  4. Cliquez sur OK.

Pour changer le nom du fichier d'en-tête de symbole de ressource

  1. Dans l’affichage des ressources, cliquez avec le bouton droit sur votre fichier .rc et choisissez Éléments de ressource inclus.

  2. Dans la zone Fichier d’en-tête de symbole, tapez le nouveau nom du fichier include.

Spécifications

Win32

Voir aussi

Identificateurs de ressources (symboles)
Guide pratique pour créer des symboles
ID de symbole prédéfinis