Dela via


Meddelandetextfiler

Meddelanden definieras i en meddelandetextfil. Meddelandekompilatorn tilldelar siffror till varje meddelande och genererar en C/C++-inkluderingsfil som programmet kan använda för att komma åt ett meddelande med en symbolisk konstant.

Den allmänna syntaxen för instruktioner i en meddelandetextfil är följande:

nyckelordsvärde=

Blanksteg runt likhetstecknet ignoreras och värdet avgränsas av blanksteg (inklusive radbrytningar) från nästa nyckelord/värde-par. Skiftläge ignoreras när du jämför med nyckelordsnamn. Det värdet del kan vara en numerisk heltalskonstant med C/C++-syntax, ett symbolnamn som följer reglerna för C/C++-identifierare eller ett filnamn med högst 8 tecken, utan perioder.

Ett exempel på en meddelandefil finns i exempelmeddelandetextfil.

Kommentarer

Kommentarsrader tillåts i meddelandetextfilen. Ett semikolon (;) börjar en kommentar som slutar i slutet av raden. Följ semikolonet med en C/C++-kommentarsindikator (//) så att huvudfilen som genereras av meddelandekompilatorn kompileras i ditt program.

;// This is a single-line comment.

För en blockkommentar börjar du varje rad med ett semikolon och placerar sedan en C/C++ öppen blockkommentarindikator (/*) efter semikolonet på den första raden och kommentarsindikatorn för nära block (*/) efter semikolonet på den sista raden.

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

Rubrikavsnitt

Meddelandetextfilen innehåller en rubrik som definierar namn och språkidentifierare som ska användas av meddelandedefinitionerna i filens brödtext. Rubriken innehåller noll eller fler av följande instruktioner.

Instruktionssyntax Beskrivning
MessageIdTypedef=typ Typ som ska användas i meddelandedefinitionen på följande sätt: #define namn ((typ)0xnnnnnnnnnn)
Typen måste vara tillräckligt stor för att rymma hela meddelandekoden, till exempel en DWORD-. Typen kan också vara en typ som definierats i programmets källkod. Standardvärdet för typ är tomt, så ingen typgjutning används.
Den här instruktionen kan anges i rubriken och så ofta som behövs i avsnittet meddelandedefinition.
SeverityNames=(namn=nummer[:namn]) Uppsättning namn som tillåts för allvarlighetsgraden i en meddelandedefinition. Associerat med varje allvarlighetsgradsnamn är ett tal som, när det flyttas åt vänster med 30 bitar, ger bitmönstret till logical-OR med funktionen och meddelande-ID-värden för att bilda meddelandekoden. Alla allvarlighetsgradsvärden som inte får plats i 2 bitar är ett fel. Allvarlighetsgradskoderna kan också ges symboliska namn. Standardvärdet definieras enligt följande: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=(namn=nummer[:namn]) Uppsättning namn som tillåts för anläggningsvärdena i en meddelandedefinition. Associerat med varje anläggningsnamn är ett tal som, när det flyttas åt vänster med 16 bitar, ger bitmönstret till logisk-OR med allvarlighetsgraden och meddelande-ID-värdena för att bilda meddelandekoden. Alla anläggningsvärden som inte får plats i 12 bitar är ett fel. Detta möjliggör 4096 facilitetskoder; de första 256 koderna är reserverade för systemanvändning. Anläggningskoderna kan också ges symboliska namn. Standardvärdet definieras enligt följande: FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=(namn=nummer:filnamn) Uppsättning namn som tillåts för språkvärdena i en meddelandedefinition. Talet används som språkidentifierare i resurstabellen. Den angivna filen innehåller meddelandena för det språket. Det är vanligtvis en .bin fil som genereras av meddelandekompilatorn.
Ett exempelvärde är: LanguageNames=(English=0x409:MSG00409)
En lista över språkidentifierare finns i https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase=tal Utdataradix för meddelandekonstanterna som meddelandekompilatorn skriver till huvudfilen. Om det finns det här värdet åsidosätter det -d växeln. Det här talet kan vara antingen 10 (decimal) eller 16 (hexadecimalt).

Meddelandedefinitioner

En meddelandetextfil innehåller noll eller fler meddelandedefinitioner efter rubrikavsnittet. I följande tabell beskrivs meddelandedefinitionssatserna. MessageId-instruktionen markerar början av meddelandedefinitionen. Instruktionen Allvarlighetsgrad och Anläggning är valfria.

Instruktionssyntax Beskrivning
MessageId=[tal|+tal] Identifierare för meddelandet. Den här instruktionen krävs, även om värdet är valfritt. Om inget värde anges är det värde som används det tidigare värdet för anläggningen, plus ett. Om värdet anges med ett plustecken är det värde som används det tidigare värdet för anläggningen, plus talet efter plustecknet. Alla angivna värden måste rymmas i 16 bitar. Mer information om hur meddelandevärdet skapas från allvarlighetsgrad, anläggning och meddelande-ID finns i diagrammet i Winerror.h. Den här huvudfilen definierar felkoder för systemet.
Allvarlighetsgrad=namn Ett av de värden som anges av SeverityNames i rubriken. Den här instruktionen är valfri. Om inget värde anges är det värde som användes det värde som senast angavs för en meddelandedefinition. Standardvärdet för den första meddelandedefinitionen är Severity=Success
Facility=namn Ett av de värden som anges av FacilityNames i rubriken. Den här instruktionen är valfri. Om inget värde anges är det värde som användes det värde som senast angavs för en meddelandedefinition. Standardvärdet för den första meddelandedefinitionen är Facility=Application
SymbolicName=namn Associerar en symbolisk C/C++-konstant med meddelandekoden. Den används i meddelandedefinitionen på följande sätt: #define namn ((typ)0xnnnnnnnnn)
OutputBase={tal} Utdataradix för meddelandet konstantar meddelandekompilatorns skrivningar till huvudfilen. Om det finns det här värdet åsidosätter det -d växeln. Det här talet kan vara antingen 10 (decimal) eller 16 (hexadecimalt).
Language=namn Ett av de värden som anges av LanguageNames i rubriken. Den här instruktionen är valfri. Om inget värde anges är det värde som användes det värde som senast angavs för en meddelandedefinition. Standardvärdet för den första meddelandedefinitionen är följande: Language=English
meddelandetext Text för meddelandet. Den ingår i den binära meddelandefilen. Den ingår också i rubrikfilen i kommentarsblocket som direkt föregår meddelandedefinitionen.
. Meddelandetexten avslutas av en ny rad som innehåller en enskild punkt i början av raden.

Om meddelandedefinitionen innehåller meddelandetext för mer än ett språk kräver varje språk sin egen språksats, meddelandetext och avslutande ny rad med en punkt. Till exempel:

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>
.

Du kan ange följande escape-sekvenser för formatering av meddelandetext för användning av loggboken eller ditt program. Procenttecknet (%) börjar alla escape-sekvenser. Andra tecken efter ett procenttecken visas utan procenttecknet.

% n[!format_specifier!]

Beskriver en infogning. Varje infogning är en post i matrisen Argument i funktionen FormatMessage. Värdet för n kan vara ett tal mellan 1 och 99. Formatspecificeraren är valfri. Om inget värde anges är standardvärdet !s!. Information om formatspecificeraren finns i wsprintf.

Formatspecificeraren kan använda * för antingen precisionen eller bredden. När de anges använder de infogningar numrerade n+1 och n+2.

%0

Avslutar en meddelandetextrad utan avslutande nytt radtecken. Detta kan användas för att skapa en lång rad eller avsluta ett meddelande utan ett avslutande nytt radtecken.

%.

Genererar en enskild period. Detta kan användas för att visa en punkt i början av en rad, vilket annars skulle avsluta meddelandetexten.

%!

Genererar ett enda utropstecken. Detta kan användas för att ange ett utropstecken direkt efter en infogning.

%%

Genererar ett enprocentstecken.

%n

Genererar en hård linjebrytning när den inträffar i slutet av en rad. Detta kan användas med FormatMessage för att säkerställa att meddelandet passar en viss bredd.

%b

Genererar ett blankstegstecken. Detta kan användas för att säkerställa ett lämpligt antal avslutande blanksteg på en rad.

%r

Genererar en hård vagnretur utan avslutande nytt radtecken.