Freigeben über


Nachrichtentextdateien

Nachrichten werden in einer Nachrichtentextdatei definiert. Der Nachrichtencompiler weist jeder Nachricht Nummern zu und generiert eine C/C++-Includedatei, mit der die Anwendung mithilfe einer symbolischen Konstante auf eine Nachricht zugreifen kann.

Die allgemeine Syntax für Anweisungen in einer Nachrichtentextdatei lautet wie folgt:

Schlüsselwort=Wert

Leerzeichen um das Gleichheitszeichen werden ignoriert, und der Wert wird durch Leerzeichen (einschließlich Zeilenumbrüche) vom nächsten Schlüsselwort-Wert-Paar getrennt. Die Groß-/Kleinschreibung wird beim Vergleichen mit Schlüsselwortnamen ignoriert. Der Wert Teil kann eine numerische ganzzahlige Konstante sein, wobei C/C++-Syntax verwendet wird, ein Symbolname, der den Regeln für C/C++-Bezeichner folgt, oder ein Dateiname mit 8 Zeichen oder weniger, ohne Punkte.

Ein Beispiel für eine Nachrichtendatei finden Sie unter Beispielnachrichtentextdatei.

Kommentare

Kommentarzeilen sind in der Nachrichtentextdatei zulässig. Ein Semikolon (;) beginnt einen Kommentar, der am Ende der Zeile endet. Folgen Sie dem Semikolon mit einem einzeiligen C/C++-Kommentarindikator (//), damit die vom Nachrichtencompiler generierte Headerdatei in Ihrer Anwendung kompiliert wird.

;// This is a single-line comment.

Beginnen Sie bei einem Blockkommentar jede Zeile mit einem Semikolon, und platzieren Sie dann einen C/C++-Blockkommentarindikator (/*) hinter dem Semikolon in der ersten Zeile und dem Schließen des Blockkommentarindikators (*/) nach dem Semikolon in der letzten Zeile.

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

Kopfzeilenabschnitt

Die Nachrichtentextdatei enthält eine Kopfzeile, die Namen und Sprachbezeichner für die Verwendung durch die Nachrichtendefinitionen im Textkörper der Datei definiert. Die Kopfzeile enthält null oder mehr der folgenden Anweisungen.

Anweisungssyntax Beschreibung
MessageIdTypedef=Typ Typ, der in der Nachrichtendefinition wie folgt verwendet werden soll: #define Name ((Typ)0xnnnnnnnn )
Der Typ muss groß genug sein, um den gesamten Nachrichtencode, z. B. ein DWORD-, aufzunehmen. Der Typ kann auch ein Typ sein, der im Anwendungsquellcode definiert ist. Der Standardwert für Typ ist leer, sodass kein Typ cast verwendet wird.
Diese Anweisung kann in der Kopfzeile und so oft wie erforderlich im Abschnitt zur Nachrichtendefinition angegeben werden.
SeverityNames=(Name=Nummer[:Name]) Gruppe von Namen, die für den Schweregrad in einer Nachrichtendefinition zulässig sind. Jeder Schweregradname zugeordnet ist eine Zahl, die, wenn sie um 30 Bit verschoben wird, das Bitmuster logischem ODER mit den Funktions- und Nachrichten-ID-Werten zum Bilden des Nachrichtencodes angibt. Jeder Schweregradwert, der nicht in 2 Bit passt, ist ein Fehler. Die Schweregradcodes können auch symbolische Namen erhalten. Der Standardwert ist wie folgt definiert: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=(Name=Nummer[:Name]) Gruppe von Namen, die für die Einrichtungswerte in einer Nachrichtendefinition zulässig sind. Der Name der einzelnen Einrichtungen ist eine Zahl, die, wenn sie um 16 Bit verschoben wird, das Bitmuster "logical-OR" mit dem Schweregrad und den Nachrichten-ID-Werten zum Bilden des Nachrichtencodes angibt. Jeder Facility-Wert, der nicht in 12 Bit passt, ist ein Fehler. Dies ermöglicht 4096 Einrichtungscodes; die ersten 256 Codes sind für die Systemverwendung reserviert. Die Einrichtungscodes können auch symbolische Namen erhalten. Der Standardwert ist wie folgt definiert: FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=(Name=Nummer:Dateinamen) Gruppe von Namen, die für die Sprachwerte in einer Nachrichtendefinition zulässig sind. Die Zahl wird als Sprachbezeichner in der Ressourcentabelle verwendet. Die angegebene Datei enthält die Nachrichten für diese Sprache. Es handelt sich in der Regel um eine .bin Datei, die vom Nachrichtencompiler generiert wird.
Ein Beispielwert ist: LanguageNames=(English=0x409:MSG00409)
Eine Liste der Sprachbezeichner finden Sie unter https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase= Ausgaberadiix für die Nachrichtenkonstanten, die der Nachrichtencompiler in die Headerdatei schreibt. Wenn vorhanden, überschreibt dieser Wert den schalter -d. Diese Zahl kann entweder 10 (dezimal) oder 16 (hexadezimal) sein.

Nachrichtendefinitionen

Eine Nachrichtentextdatei enthält null oder mehr Nachrichtendefinitionen nach dem Kopfzeilenabschnitt. In der folgenden Tabelle werden die Nachrichtendefinitionsanweisungen beschrieben. Die MessageId-Anweisung markiert den Anfang der Nachrichtendefinition. Die Schweregrad- und Facility-Anweisungen sind optional.

Anweisungssyntax Beschreibung
MessageId=[number|+number] Bezeichner für die Nachricht. Diese Anweisung ist erforderlich, obwohl der Wert optional ist. Wenn kein Wert angegeben ist, ist der verwendete Wert der vorherige Wert für die Einrichtung plus ein Wert. Wenn der Wert mit einem Pluszeichen angegeben wird, ist der verwendete Wert der vorherige Wert für die Einrichtung sowie die Zahl nach dem Pluszeichen. Jeder angegebene Wert muss in 16 Bits passen. Weitere Informationen dazu, wie der Nachrichtenwert aus dem Schweregrad, der Einrichtung und der Nachrichten-ID gebildet wird, finden Sie im Diagramm in Winerror.h. Diese Headerdatei definiert Fehlercodes für das System.
Schweregrad=Name Einer der Werte, die durch "SeverityNames" in der Kopfzeile angegeben wurden. Diese Anweisung ist optional. Wenn kein Wert angegeben ist, ist der verwendete Wert der zuletzt für eine Nachrichtendefinition angegebene Wert. Die Standardeinstellung für die erste Nachrichtendefinition ist Severity=Success
Facility=Name Einer der von FacilityNames in der Kopfzeile angegebenen Werte. Diese Anweisung ist optional. Wenn kein Wert angegeben ist, ist der verwendete Wert der zuletzt für eine Nachrichtendefinition angegebene Wert. Die Standardeinstellung für die erste Nachrichtendefinition ist Facility=Application
SymbolicName=Name Ordnet eine symbolische C/C++-Konstante dem Nachrichtencode zu. Sie wird in der Nachrichtendefinition wie folgt verwendet: #define Name ((Typ)0xnnnnnnnn)
OutputBase={Zahl} Ausgaberadiix für die Nachrichtenkonstanten, die der Nachrichtencompiler in die Headerdatei schreibt. Wenn vorhanden, überschreibt dieser Wert den schalter -d. Diese Zahl kann entweder 10 (dezimal) oder 16 (hexadezimal) sein.
Language=Name Einer der von LanguageNames in der Kopfzeile angegebenen Werte. Diese Anweisung ist optional. Wenn kein Wert angegeben ist, ist der verwendete Wert der zuletzt für eine Nachrichtendefinition angegebene Wert. Die Standardeinstellung für die erste Nachrichtendefinition lautet wie folgt: Language=English
Nachrichtentext Text für die Nachricht. Sie ist in der Binärdatei der Nachricht enthalten. Sie ist auch in der Kopfzeilendatei im Kommentarblock enthalten, die direkt vor der Nachrichtendefinition steht.
. Nachrichtentext wird durch eine neue Zeile beendet, die einen einzelnen Punkt am Anfang der Zeile enthält.

Wenn die Nachrichtendefinition Nachrichtentext für mehr als eine Sprache enthält, erfordert jede Sprache eine eigene Language-Anweisung, den Nachrichtentext und das Beenden einer neuen Zeile mit einem Punkt. Zum Beispiel:

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

Sie können die folgenden Escapesequenzen zum Formatieren von Nachrichtentext für die Verwendung durch die Ereignisanzeige oder Die Anwendung angeben. Das Prozentzeichen (%) beginnt alle Escapesequenzen. Alle anderen Zeichen, die auf ein Prozentzeichen folgen, werden ohne das Prozentzeichen angezeigt.

% n[!format_specifier!]

Beschreibt eine Einfügemarke. Jedes Einfügen ist ein Eintrag im Arguments-Array in der FormatMessage--Funktion. Der Wert von n kann eine Zahl zwischen 1 und 99 sein. Der Formatbezeichner ist optional. Wenn kein Wert angegeben ist, ist der Standardwert !s!. Informationen zum Formatbezeichner finden Sie unter wsprintf.

Der Formatbezeichner kann * entweder für die Genauigkeit oder die Breite verwenden. Wenn angegeben, verwenden sie nummerierte n+1 und n+2.

%0

Beendet eine Nachrichtentextzeile ohne nachfolgendes Zeilenzeichen. Dies kann verwendet werden, um eine lange Zeile zu erstellen oder eine Eingabeaufforderungsnachricht ohne nachfolgendes Zeilenzeichen zu beenden.

%.

Generiert einen einzelnen Punkt. Dies kann verwendet werden, um einen Punkt am Anfang einer Zeile anzuzeigen, was andernfalls den Nachrichtentext beenden würde.

%!

Generiert ein einzelnes Ausrufezeichen. Dies kann verwendet werden, um ein Ausrufezeichen unmittelbar nach dem Einfügen anzugeben.

%%

Generiert ein einzelnes Prozentzeichen.

%n

Generiert einen harten Zeilenumbruch, wenn er am Ende einer Zeile auftritt. Dies kann mit FormatMessage- verwendet werden, um sicherzustellen, dass die Nachricht einer bestimmten Breite entspricht.

%b

Generiert ein Leerzeichen. Dies kann verwendet werden, um eine angemessene Anzahl von nachgestellten Leerzeichen in einer Zeile sicherzustellen.

%r

Generiert einen harten Wagenrücklauf ohne nachfolgendes Zeilenumbruchzeichen.