Meldungstextdateien
Nachrichten werden in einer Nachrichtentextdatei definiert. Der Nachrichtencompiler weist jeder Nachricht Zahlen 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 Meldungstextdatei lautet wie folgt:
Schlüsselwort = wert
Leerzeichen um das Gleichheitszeichen werden ignoriert, und der Wert wird durch Leerzeichen (einschließlich Zeilenumbrüchen) vom nächsten Schlüsselwort-Wert-Paar getrennt. Der Fall wird beim Vergleich mit Schlüsselwortnamen ignoriert. Der Wertteil kann eine numerische ganzzahlige Konstante mit C/C++-Syntax, ein Symbolname, der den Regeln für C/C++-Bezeichner folgt, oder ein Dateiname mit maximal 8 Zeichen ohne Punkt sein.
Eine Beispielmeldungsdatei finden Sie unter Beispielnachrichten-Textdatei.
Kommentare
Kommentarzeilen sind in der Meldungstextdatei 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++-Indikator für offene * Blockkommentare (/) nach dem Semikolon in der ersten Zeile und den Schließen-Blockkommentarindikator ( * /) nach dem Semikolon in der letzten Zeile.
;/* This is a block comment.
; It spans multiple lines.
;*/
Headerabschnitt
Die Meldungstextdatei enthält einen Header, der Namen und Sprachbezeichner für die Verwendung durch die Nachrichtendefinitionen im Text der Datei definiert. Der Header enthält 0 (null) oder mehr der folgenden Anweisungen.
| Anweisungssyntax | Beschreibung |
|---|---|
| MessageIdTypedef=type | Typ, der in der Nachrichtendefinition wie folgt verwendet werden soll: # define name ((typ)0x nnnnnnnn ) Der Typ muss groß genug sein, um den gesamten Nachrichtencode aufnehmen zu können, z. B. ein DWORD-. Der Typ kann auch ein typ sein, der im Quellcode der Anwendung definiert ist. Der Standardwert für type ist leer, sodass keine Typcasting verwendet wird. Diese Anweisung kann im -Header und so oft wie nötig im Nachrichtendefinitionsabschnitt angegeben werden. |
| SeverityNames=(name = number [ :name ] ) | Eine Gruppe von Namen, die für den Schweregrad in einer Nachrichtendefinition zulässig sind. Jedem Schweregradnamen ist eine Zahl zugeordnet, die, wenn sie um 30 Bits nach links verschoben wird, das Bitmuster für logical-OR mit der Einrichtung und den Nachrichten-ID-Werten zum Bilden des Nachrichtencodes angibt. Jeder Schweregradwert, der nicht in 2 Bits passt, ist ein Fehler. Die Schweregradcodes können ebenfalls symbolische Namen erhalten. Der Standardwert ist wie folgt definiert: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3) |
| FacilityNames=( = Namesnummer [ :Name ] ) | Ein Satz von Namen, die für die Einrichtungswerte in einer Nachrichtendefinition zulässig sind. Jedem Einrichtungsnamen ist eine Zahl zugeordnet, die, wenn sie um 16 Bits nach links verschoben wird, das Bitmuster logischem OR mit dem Schweregrad und den Nachrichten-ID-Werten zum Bilden des Nachrichtencodes angibt. Jeder Einrichtungswert, der nicht in 12 Bits passt, ist ein Fehler. Dies ermöglicht 4.096 Einrichtungscodes. die ersten 256 Codes sind für die Systemverwendung reserviert. Den Einrichtungscodes können auch symbolische Namen gegeben werden. Der Standardwert ist wie folgt definiert: FacilityNames=( System=0x0FF Application=0xFFF) |
| LanguageNames=( = Namesnummer:Dateiname) | 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=number | Ausgaberadix für die Nachrichtenkonstanten, die der Nachrichtencompiler in die Headerdatei schreibt. Falls vorhanden, überschreibt dieser Wert den Schalter -d. Diese Zahl kann entweder 10 (dezimal) oder 16 (hexadezimal) sein. |
Nachrichtendefinitionen
Eine Meldungstextdatei enthält 0 (null) oder mehr Nachrichtendefinitionen, die dem Headerabschnitt folgen. In der folgenden Tabelle werden die Meldungsdefinitionsanweisungen beschrieben. Die MessageId-Anweisung markiert den Anfang der Nachrichtendefinition. Die Anweisungen "Severity" und "Facility" 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 wird, 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 Schweregrad, Einrichtung und Nachrichten-ID gebildet wird, finden Sie im Diagramm in Winerror.h. Diese Headerdatei definiert Fehlercodes für das System. |
| Severity=name | Einer der Von SeverityNames im Header angegebenen Werte. Diese Anweisung ist optional. Wenn kein Wert angegeben wird, ist der verwendete Wert der wert, der zuletzt für eine Nachrichtendefinition angegeben wurde. Der Standardwert für die erste Nachrichtendefinition ist Severity=Success |
| Facility=name | Einer der von FacilityNames im Header angegebenen Werte. Diese Anweisung ist optional. Wenn kein Wert angegeben wird, ist der verwendete Wert der wert, der zuletzt für eine Nachrichtendefinition angegeben wurde. Der Standardwert für die erste Nachrichtendefinition ist Facility=Application |
| SymbolicName=name | Ordnet dem Nachrichtencode eine symbolische C/C++-Konstante zu. Sie wird in der Nachrichtendefinition wie folgt verwendet: # define name ((typ)0x nnnnnnnn ) |
| OutputBase={number} | Ausgaberadix für die Nachrichtenkonstanten, die der Nachrichtencompiler in die Headerdatei schreibt. Falls vorhanden, überschreibt dieser Wert den Schalter -d. Diese Zahl kann entweder 10 (dezimal) oder 16 (hexadezimal) sein. |
| Language=name | Einer der Von LanguageNames im Header angegebenen Werte. Diese Anweisung ist optional. Wenn kein Wert angegeben wird, ist der verwendete Wert der wert, der zuletzt für eine Nachrichtendefinition angegeben wurde. Die Standardeinstellung für die erste Nachrichtendefinition lautet wie folgt: Language=English |
| Meldungstext | Text für die Nachricht. Sie ist in der Nachrichtenbinärdatei enthalten. Sie ist auch in der Headerdatei im Kommentarblock enthalten, der direkt vor der Nachrichtendefinition steht. |
| . | Der Nachrichtentext wird durch eine neue Zeile beendet, die einen einzelnen Punkt am Anfang der Zeile enthält. |
Wenn die Nachrichtendefinition Nachrichtentext für mehrere Sprachen enthält, erfordert jede Sprache eine eigene Language-Anweisung, einen eigenen Nachrichtentext und das Beenden einer neuen Zeile mit einem Punkt. 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 Meldungstext für die Verwendung durch die Ereignisanzeige oder Ihre Anwendung angeben. Das Prozentzeichen (%) beginnt mit allen Escapesequenzen. Alle anderen Zeichen, die auf ein Prozentzeichen folgen, werden ohne das Prozentzeichen angezeigt.
-
%n [ ! _ Formatbezeichner!]
-
Beschreibt eine Einfügung. Jede Einfügung ist ein Eintrag im Arguments-Array in der FormatMessage-Funktion. Der Wert n kann eine Zahl zwischen 1 und 99 sein. Der Formatbezeichner ist optional. Wenn kein Wert angegeben wird, 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, werden Einfügungen mit der Nummer n+1 und n+2 verwendet.
-
%0
-
Beendet eine Meldungstextzeile ohne ein nachstehend neues Zeilenumbruchzeichen. Dies kann verwendet werden, um eine lange Zeile zu erstellen oder eine Eingabeaufforderungsnachricht ohne nachstehend ein Zeilenumbruchzeichen zu beenden.
-
%.
-
Generiert einen einzelnen Zeitraum. Dies kann verwendet werden, um einen Zeitraum am Anfang einer Zeile anzuzeigen, der andernfalls den Meldungstext beenden würde.
-
%!
-
Generiert ein einzelnes Ausrufezeichen. Dies kann verwendet werden, um ein Ausrufezeichen unmittelbar nach einem Einfügezeichen anzugeben.
-
%%
-
Generiert ein einzelnes Prozentzeichen.
-
%n
-
Generiert einen harte Zeilenumbruch, wenn er am Ende einer Zeile auftritt. Dies kann mit FormatMessage verwendet werden, um sicherzustellen, dass die Nachricht eine bestimmte Breite hat.
-
%b
-
Generiert ein Leerzeichen. Dies kann verwendet werden, um eine angemessene Anzahl von nachstellenden Leerzeichen in einer Zeile sicherzustellen.
-
%r
-
Generiert eine harter Wagenrücklaufrücklauf ohne ein nachlaufendes Neulinienzeichen.