Sdílet prostřednictvím


Textové soubory zpráv

Zprávy jsou definovány v textovém souboru zprávy. Kompilátor zpráv přiřadí ke každé zprávě čísla a vygeneruje soubor C/C++, který může aplikace použít pro přístup ke zprávě pomocí symbolické konstanty.

Obecná syntaxe příkazů v textovém souboru zprávy je následující:

hodnota=klíčového slova

Mezery kolem znaménka rovná se ignorují a hodnota je oddělená prázdným znakem (včetně konců řádků) od další dvojice klíčových slov a hodnot. Při porovnávání s názvy klíčových slov se malá a velká písmena ignorují. Hodnota část může být číselná celočíselná konstanta pomocí syntaxe jazyka C/C++, název symbolu, který odpovídá pravidlům pro identifikátory jazyka C/C++, nebo název souboru s 8 znaky nebo méně znaků bez tečk.

Příklad souboru zprávy naleznete ukázkový textový soubor zprávy.

Komentáře

Řádky komentářů jsou povoleny v textovém souboru zprávy. Středník (;) začíná komentář, který končí na konci řádku. Postupujte podle středníku s jedním řádkovým indikátorem komentáře C/C++ (//), aby se soubor hlaviček vygenerovaný kompilátorem zpráv zkompiloval ve vaší aplikaci.

;// This is a single-line comment.

U komentáře bloku začněte každý řádek středníkem a za středníkem na posledním řádku umístěte indikátor komentáře otevřeného bloku C/C++ (/*) za středník a indikátor komentáře k zavření bloku (*/).

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

Oddíl záhlaví

Textový soubor zprávy obsahuje záhlaví, které definuje názvy a identifikátory jazyka pro použití definicemi zprávy v textu souboru. Hlavička obsahuje nula nebo více následujících příkazů.

Syntaxe příkazu Popis
MessageIdTypedef=typ Do definice zprávy zadejte následující typ: #define název ((typ)0xnnnnnnnn)
Typ musí být dostatečně velký, aby se přizpůsobil celému kódu zprávy, například DWORD. Typ může být také typem definovaným ve zdrojovém kódu aplikace. Výchozí hodnota typu je prázdná, takže se nepoužívá přetypování typu.
Tento příkaz lze zadat v záhlaví a jak často je to nutné v části definice zprávy.
SeverityNames=(název=číslo[:název]) Sada názvů, které jsou povoleny pro závažnost v definici zprávy. Přidružený ke každému názvu závažnosti je číslo, které při posunu doleva o 30 bitů dává bitovému vzoru logickou hodnotu OR s hodnotami zařízení a ID zprávy, které tvoří kód zprávy. Jakákoli hodnota závažnosti, která se nevejde do 2 bitů, je chyba. Kódy závažnosti mohou mít také symbolické názvy. Výchozí hodnota je definována takto: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=(název=číslo[:název]) Sada názvů, které jsou povoleny pro hodnoty zařízení v definici zprávy. Přidružené ke každému názvu zařízení je číslo, které při posunu doleva o 16 bitů dává bitovému vzoru logickou hodnotu OR s hodnotami závažnosti a ID zprávy pro vytvoření kódu zprávy. Jakákoli hodnota zařízení, která se nevejde do 12 bitů, je chyba. To umožňuje 4096 kódů zařízení; prvních 256 kódů je vyhrazeno pro použití systému. Kódy zařízení mohou mít také symbolické názvy. Výchozí hodnota je definována takto: FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=(název=číslo:název souboru) Sada názvů, které jsou povoleny pro hodnoty jazyka v definici zprávy. Číslo se používá jako identifikátor jazyka v tabulce prostředků. Zadaný soubor obsahuje zprávy pro daný jazyk. Obvykle se jedná o .bin soubor vygenerovaný kompilátorem zpráv.
Příklad hodnoty: LanguageNames=(English=0x409:MSG00409)
Seznam identifikátorů jazyka najdete v tématu https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase=číslo Výstupní radix pro konstanty zprávy, které kompilátor zpráv zapisuje do souboru hlavičky. Pokud je k dispozici, tato hodnota přepíše přepínač -d. Toto číslo může být buď 10 (desítkové), nebo 16 (šestnáctkové).

Definice zpráv

Textový soubor zprávy obsahuje za oddílem záhlaví nula nebo více definic zpráv. Následující tabulka popisuje příkazy definice zpráv. Příkaz MessageId označuje začátek definice zprávy. Příkazy Závažnost a Zařízení jsou volitelné.

Syntaxe příkazu Popis
MessageId=[číslo|+číslo] Identifikátor zprávy. Tento příkaz je povinný, i když je hodnota nepovinná. Pokud není zadána žádná hodnota, použije se předchozí hodnota pro zařízení plus jedna. Pokud je hodnota zadaná znaménkem plus, použije se pro zařízení předchozí hodnota plus číslo za znaménkem plus. Zadaná hodnota se musí vejít do 16 bitů. Další podrobnosti o tom, jak se hodnota zprávy vytváří ze závažnosti, zařízení a ID zprávy, najdete v diagramu winerror.h. Tento soubor hlaviček definuje kódy chyb pro systém.
Závažnost=název Jedna z hodnot zadaných v hlavičce SeverityNames. Tento příkaz je nepovinný. Pokud není zadána žádná hodnota, je použitá hodnota poslední zadaná pro definici zprávy. Výchozí hodnota pro první definici zprávy je Severity=Success
Facility=name Jedna z hodnot zadaných objektem FacilityNames v hlavičce Tento příkaz je nepovinný. Pokud není zadána žádná hodnota, je použitá hodnota poslední zadaná pro definici zprávy. Výchozí hodnota pro první definici zprávy je Facility=Application
Symbolický název=název Přidruží symbolickou konstantu C/C++ ke kódu zprávy. Používá se v definici zprávy následujícím způsobem: #define název ((typ)0xnnnnnnnn)
OutputBase={číslo} Výstupní radix pro konstanty zprávy zapisuje kompilátor zpráv do souboru hlavičky. Pokud je k dispozici, tato hodnota přepíše přepínač -d. Toto číslo může být buď 10 (desítkové), nebo 16 (šestnáctkové).
Language=název Jedna zhodnotýchch Tento příkaz je nepovinný. Pokud není zadána žádná hodnota, je použitá hodnota poslední zadaná pro definici zprávy. Výchozí hodnota pro první definici zprávy je následující: Language=English
textové zprávy Text zprávy Je součástí binárního souboru zprávy. Je také součástí hlavičkového souboru v bloku komentáře, který přímo předchází definici zprávy.
. Text zprávy je ukončen novým řádkem obsahujícím jedno tečky na začátku řádku.

Pokud definice zprávy obsahuje text zprávy pro více než jeden jazyk, každý jazyk vyžaduje vlastní jazykový příkaz, text zprávy a ukončování nového řádku tečkou. Například:

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

Můžete zadat následující řídicí sekvence pro formátování textu zprávy pro použití prohlížečem událostí nebo vaší aplikací. Znak procenta znaku (%) začíná všemi řídicími sekvencemi. Jakýkoli jiný znak za znakem procenta se zobrazí bez znaku procenta.

% n[!format_specifier!]

Popisuje vložení. Každé vložení je položka v poli Argumenty ve funkci FormatMessage. Hodnota n může být číslo v rozsahu 1 až 99. Specifikátor formátu je volitelný. Pokud není zadána žádná hodnota, výchozí hodnota je !s!. Informace o specifikátoru formátu naleznete v tématu wsprintf.

Specifikátor formátu může použít * pro přesnost nebo šířku. Při zadání spotřebují číslovaný n+1 a n+2.

%0

Ukončí textový řádek zprávy bez koncového znaku nového řádku. Dá se použít k vytvoření dlouhého řádku nebo ukončení výzvy bez koncového znaku nového řádku.

%.

Vygeneruje jedno období. Dá se použít k zobrazení tečky na začátku řádku, což by jinak ukončilo text zprávy.

%!

Vygeneruje jeden vykřičník. Dá se použít k určení vykřičníku bezprostředně po vložení.

%%

Vygeneruje jednoznaménko procent.

%n

Vygeneruje pevný konec řádku, když se objeví na konci řádku. To lze použít s FormatMessage zajistit, aby zpráva odpovídala určité šířce.

%b

Vygeneruje znak mezery. To se dá použít k zajištění odpovídajícího počtu koncových mezer na řádku.

%r

Vygeneruje návrat s pevným znakem řádku bez koncového znaku nového řádku.