Partager via


Fichiers texte de message

Les messages sont définis dans un fichier texte de message. Le compilateur de messages affecte des nombres à chaque message et génère un fichier include C/C++ que l’application peut utiliser pour accéder à un message à l’aide d’une constante symbolique.

La syntaxe générale des instructions dans un fichier texte de message est la suivante :

valeur de mot clé=

Les espaces autour du signe égal sont ignorés et la valeur est délimitée par des espaces blancs (y compris les sauts de ligne) de la paire mot clé/valeur suivante. La casse est ignorée lors de la comparaison avec les noms de mots clés. La valeur partie peut être une constante entière numérique à l’aide de la syntaxe C/C++, d’un nom de symbole qui suit les règles des identificateurs C/C++ ou d’un nom de fichier avec 8 caractères ou moins, sans points.

Pour obtenir un exemple de fichier de message, consultez exemple de fichier texte de message.

Commentaires

Les lignes de commentaire sont autorisées dans le fichier texte du message. Un point-virgule (;) commence un commentaire qui se termine à la fin de la ligne. Suivez le point-virgule avec un indicateur de commentaire monoligne C/C++ (//) afin que le fichier d’en-tête généré par le compilateur de messages se compile dans votre application.

;// This is a single-line comment.

Pour un commentaire de bloc, commencez chaque ligne par un point-virgule, puis placez un indicateur de commentaire de bloc ouvert C/C++ (/*) après le point-virgule sur la première ligne et l’indicateur de commentaire du bloc de fermeture (*/) après le point-virgule de la dernière ligne.

;/* This is a block comment.
;   It spans multiple lines.
;*/

Section En-tête

Le fichier texte du message contient un en-tête qui définit les noms et les identificateurs de langue à utiliser par les définitions de message dans le corps du fichier. L’en-tête contient zéro ou plusieurs instructions suivantes.

Syntaxe de l’instruction Description
MessageIdTypedef=type Type à utiliser dans la définition de message comme suit : #define nom ((type)0xnnnnnnnn)
Le type doit être suffisamment grand pour prendre en charge l’intégralité du code de message, tel qu’un DWORD. Le type peut également être un type défini dans le code source de l’application. La valeur par défaut de type est vide. Par conséquent, aucun cast de type n’est utilisé.
Cette instruction peut être spécifiée dans l’en-tête et aussi souvent que nécessaire dans la section définition de message.
SeverityNames=(name=number[ :name]) Ensemble de noms autorisés pour la gravité dans une définition de message. Associé à chaque nom de gravité est un nombre qui, lorsqu’il est décalé de 30 bits, donne le modèle de bits à logique OR avec les valeurs d’installation et d’ID de message pour former le code du message. Toute valeur de gravité qui ne correspond pas à 2 bits est une erreur. Les codes de gravité peuvent également être donnés des noms symboliques. La valeur par défaut est définie comme suit : SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=(name=number[ :name]) Ensemble de noms autorisés pour les valeurs d’installation dans une définition de message. Associé à chaque nom d’installation est un nombre qui, lorsqu’il est décalé de 16 bits, donne le modèle de bits à logique OR avec les valeurs de gravité et d’ID de message pour former le code du message. Toute valeur d’installation qui ne correspond pas à 12 bits est une erreur. Cela permet des codes de facilité 4096 ; les 256 premiers codes sont réservés à l’utilisation du système. Les codes d’installation peuvent également être donnés des noms symboliques. La valeur par défaut est définie comme suit : FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=(name=number:nom de fichier) Ensemble de noms autorisés pour les valeurs de langue dans une définition de message. Le nombre est utilisé comme identificateur de langue dans la table de ressources. Le fichier spécifié contient les messages de cette langue. Il s’agit généralement d’un fichier .bin généré par le compilateur de messages.
Voici un exemple de valeur : LanguageNames=(English=0x409 :MSG00409)
Pour obtenir la liste des identificateurs de langue, consultez https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase=nombre Radix de sortie pour les constantes de message que le compilateur de messages écrit dans le fichier d’en-tête. Si elle est présente, cette valeur remplace le commutateur -d. Ce nombre peut être 10 (décimal) ou 16 (hexadécimal).

Définitions de message

Un fichier texte de message contient zéro ou plusieurs définitions de message suivant la section d’en-tête. Le tableau suivant décrit les instructions de définition de message. L’instruction MessageId marque le début de la définition du message. Les instructions Gravité et Installation sont facultatives.

Syntaxe de l’instruction Description
MessageId=[ nombrenombre|+nombre] Identificateur du message. Cette instruction est obligatoire, bien que la valeur soit facultative. Si aucune valeur n’est spécifiée, la valeur utilisée est la valeur précédente de l’installation, plus une. Si la valeur est spécifiée avec un signe plus, la valeur utilisée est la valeur précédente de l’installation, ainsi que le nombre après le signe plus. Toute valeur spécifiée doit correspondre à 16 bits. Pour plus d’informations sur la façon dont la valeur du message est formée à partir de la gravité, de l’installation et de l’ID de message, consultez le diagramme dans Winerror.h. Ce fichier d’en-tête définit des codes d’erreur pour le système.
Gravité =nom Une des valeurs spécifiées par SeverityNames dans l’en-tête. Cette instruction est facultative. Si aucune valeur n’est spécifiée, la valeur utilisée est la dernière spécifiée pour une définition de message. La valeur par défaut de la première définition de message est Severity=Success
Facility=nom Une des valeurs spécifiées par FacilityNames dans l’en-tête. Cette instruction est facultative. Si aucune valeur n’est spécifiée, la valeur utilisée est la dernière spécifiée pour une définition de message. La valeur par défaut de la première définition de message est Facility=Application
SymbolName=nom Associe une constante symbolique C/C++ au code du message. Il est utilisé dans la définition de message comme suit : #define nom ((type)0xnnnnnnnn)
OutputBase={ nombre} Radix de sortie pour les constantes de message que le compilateur de messages écrit dans le fichier d’en-tête. Si elle est présente, cette valeur remplace le commutateur -d. Ce nombre peut être 10 (décimal) ou 16 (hexadécimal).
Language=nom Une des valeurs spécifiées par LanguageNames dans l’en-tête. Cette instruction est facultative. Si aucune valeur n’est spécifiée, la valeur utilisée est la dernière spécifiée pour une définition de message. La valeur par défaut de la première définition de message est la suivante : Language=English
texte du message Texte du message. Il est inclus dans le fichier binaire de message. Il est également inclus dans le fichier d’en-tête dans le bloc de commentaires qui précède directement la définition du message.
. Le texte du message est arrêté par une nouvelle ligne contenant une seule période au début de la ligne.

Si la définition du message inclut du texte de message pour plusieurs langues, chaque langue nécessite son propre instruction Language, le texte du message et la fin de la nouvelle ligne avec une période. Par exemple:

MessageId=0x1
Severity=Error
Facility=Runtime
SymbolicName=MSG_BAD_COMMAND
Language=English
You have chosen an incorrect command.
.

Language=Japanese
<Japanese message string goes here>
.

Vous pouvez spécifier les séquences d’échappement suivantes pour mettre en forme le texte du message à utiliser par l’observateur d’événements ou votre application. Le caractère de signe de pourcentage (%) commence toutes les séquences d’échappement. Tout autre caractère suivant un signe de pourcentage s’affiche sans le signe de pourcentage.

% n[ !format_specifier!]

Décrit une insertion. Chaque insertion est une entrée dans le tableau Arguments de la fonctionFormatMessage. La valeur de n peut être un nombre compris entre 1 et 99. Le spécificateur de format est facultatif. Si aucune valeur n’est spécifiée, la valeur par défaut est !s !. Pour plus d’informations sur le spécificateur de format, consultez wsprintf.

Le spécificateur de format peut utiliser * pour la précision ou la largeur. Lorsqu’ils sont spécifiés, ils consomment des insertions numérotées n+1 et n+2.

%0

Met fin à une ligne de texte de message sans caractère de ligne de fin. Cela peut être utilisé pour générer une longue ligne ou arrêter un message d’invite sans caractère de ligne de fin.

%.

Génère une seule période. Cela peut être utilisé pour afficher un point au début d’une ligne, qui met sinon fin au texte du message.

%!

Génère un point d’exclamation unique. Cela peut être utilisé pour spécifier un point d’exclamation immédiatement après une insertion.

%%

Génère un signe de pourcentage unique.

%n

Génère un saut de ligne dur lorsqu’il se produit à la fin d’une ligne. Cela peut être utilisé avec formatMessage pour vous assurer que le message correspond à une certaine largeur.

%b

Génère un espace. Cela peut être utilisé pour garantir un nombre approprié d’espaces de fin sur une ligne.

%r

Génère un retour chariot dur sans caractère de ligne de fin.