Udostępnij za pośrednictwem


Pliki tekstowe wiadomości

Komunikaty są definiowane w pliku tekstowym wiadomości. Kompilator komunikatów przypisuje liczby do każdego komunikatu i generuje plik dołączania C/C++, którego aplikacja może używać do uzyskiwania dostępu do komunikatu przy użyciu stałej symbolicznej.

Ogólna składnia instrukcji w pliku tekstowym wiadomości jest następująca:

= wartości słowa kluczowego

Spacje wokół znaku równości są ignorowane, a wartość jest rozdzielana odstępem (w tym podziałami wierszy) z następnej pary słowa kluczowego/wartości. Wielkość liter jest ignorowana podczas porównywania nazw słów kluczowych. Wartość części może być stałą liczbową całkowitą przy użyciu składni języka C/C++, nazwy symbolu zgodnej z regułami identyfikatorów języka C/C++ lub nazwy pliku z 8 znakami lub mniejszą liczbą znaków, bez krosek.

Aby uzyskać przykładowy plik komunikatu, zobacz przykładowy plik tekstowy wiadomości.

Komentarze

Wiersze komentarza są dozwolone w pliku tekstowym wiadomości. Średnik (;) rozpoczyna komentarz kończący się na końcu wiersza. Wykonaj średnik ze wskaźnikiem komentarza jednowierszowego języka C/C++ (//), aby plik nagłówkowy wygenerowany przez kompilator komunikatów skompilował w aplikacji.

;// This is a single-line comment.

W przypadku komentarza bloku rozpocznij każdy wiersz średnikiem, a następnie umieść wskaźnik komentarza otwartego bloku C/C++ (/*) po średniku w pierwszym wierszu i wskaźnik komentarza zamknięcia bloku (*/) po średniku w ostatnim wierszu.

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

Sekcja nagłówka

Plik tekstowy wiadomości zawiera nagłówek, który definiuje nazwy i identyfikatory języka do użycia przez definicje komunikatów w treści pliku. Nagłówek zawiera zero lub więcej z poniższych instrukcji.

Składnia instrukcji Opis
MessageIdTypedef= typ Wpisz, który ma być używany w definicji komunikatu w następujący sposób: #define nazwa ((wpisz)0xnnnnnn)
Typ musi być wystarczająco duży, aby pomieścić cały kod komunikatu, taki jak DWORD. Typ może być również typem zdefiniowanym w kodzie źródłowym aplikacji. Wartość domyślna typu jest pusta, więc nie jest używana rzutowanie typu.
Tę instrukcję można określić w nagłówku i tak często, jak to konieczne w sekcji definicji komunikatu.
SeverityNames=( nazwa=numer[:nazwa]) Zestaw nazw dozwolonych dla ważności w definicji komunikatu. Skojarzona z każdą nazwą ważności jest liczbą, która po przesunięciu w lewo o 30 bitów daje wzorzec bitowy logicznemu OR wartościom obiektu i identyfikatora komunikatu w celu utworzenia kodu komunikatu. Każda wartość ważności, która nie mieści się w 2 bitach, jest błędem. Kody ważności mogą również mieć nazwy symboliczne. Wartość domyślna jest zdefiniowana w następujący sposób: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=( nazwa=numer[:nazwa]) Zestaw nazw dozwolonych dla wartości obiektu w definicji komunikatu. Skojarzona z każdą nazwą obiektu jest liczbą, która po przesunięciu w lewo o 16 bitów daje wzorzec bitowy logicznemu OR z wartościami ważności i identyfikatora komunikatu w celu utworzenia kodu komunikatu. Każda wartość obiektu, która nie mieści się w 12 bitach, jest błędem. Pozwala to na kody 4096 obiektów; pierwsze kody 256 są zarezerwowane do użytku systemowego. Kody obiektów mogą również mieć nazwy symboliczne. Wartość domyślna jest definiowana w następujący sposób: FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=( nazwa=numer:nazwa pliku) Zestaw nazw dozwolonych dla wartości języka w definicji komunikatu. Liczba jest używana jako identyfikator języka w tabeli zasobów. Określony plik zawiera komunikaty dla tego języka. Zazwyczaj jest to plik .bin generowany przez kompilator komunikatów.
Przykładowa wartość to: LanguageNames=(English=0x409:MSG00409)
Aby uzyskać listę identyfikatorów języków, zobacz https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase =liczba Radix danych wyjściowych dla stałych komunikatów, które kompilator komunikatów zapisuje w pliku nagłówkowym. Jeśli jest obecna, ta wartość zastępuje przełącznik -d. Ta liczba może być 10 (dziesiętna) lub 16 (szesnastkowa).

Definicje komunikatów

Plik tekstowy wiadomości zawiera zero lub więcej definicji komunikatów zgodnie z sekcją nagłówka. W poniższej tabeli opisano instrukcje definicji komunikatów. Instrukcja MessageId oznacza początek definicji komunikatu. Instrukcje Ważność i Funkcja są opcjonalne.

Składnia instrukcji Opis
MessageId=[liczba|+liczba] Identyfikator komunikatu. Ta instrukcja jest wymagana, chociaż wartość jest opcjonalna. Jeśli żadna wartość nie jest określona, użyta wartość jest poprzednią wartością obiektu, plus jedną. Jeśli wartość jest określona z znakiem plus, użyta wartość jest poprzednią wartością obiektu, plus numer po znaku plus. Każda określona wartość musi mieścić się w 16 bitach. Aby uzyskać więcej informacji na temat sposobu tworzenia wartości komunikatu na podstawie ważności, obiektu i identyfikatora komunikatu, zobacz diagram w pliku Winerror.h. Ten plik nagłówka definiuje kody błędów dla systemu.
Ważność = nazwa Jedna z wartości określonych przez ważnośćNames w nagłówku. Ta instrukcja jest opcjonalna. Jeśli nie określono żadnej wartości, użyta wartość jest ostatnio określona dla definicji komunikatu. Domyślną wartością pierwszej definicji komunikatu jest Severity=Success
Obiekt = nazwa Jedna z wartości określonych przez FacilityNames w nagłówku. Ta instrukcja jest opcjonalna. Jeśli nie określono żadnej wartości, użyta wartość jest ostatnio określona dla definicji komunikatu. Domyślną wartością pierwszej definicji komunikatu jest Facility=Application
Nazwa symboliczna = nazwa Kojarzy stałą symboliczną C/C++ z kodem komunikatu. Jest on używany w definicji komunikatu w następujący sposób: nazwa #define ((typ)0xnnnnnn)
OutputBase={liczba} Radix danych wyjściowych dla stałych komunikatów kompilator komunikatów zapisuje w pliku nagłówkowym. Jeśli jest obecna, ta wartość zastępuje przełącznik -d. Ta liczba może być 10 (dziesiętna) lub 16 (szesnastkowa).
Language = nazwa Jedna z wartości określonych przez LanguageNames w nagłówku. Ta instrukcja jest opcjonalna. Jeśli nie określono żadnej wartości, użyta wartość jest ostatnio określona dla definicji komunikatu. Domyślną wartością pierwszej definicji komunikatu jest następująca: Language=English
tekst wiadomości Tekst wiadomości. Znajduje się on w pliku binarnym komunikatu. Znajduje się on również w pliku nagłówkowym w bloku komentarza, który bezpośrednio poprzedza definicję wiadomości.
. Tekst wiadomości jest przerywany przez nowy wiersz zawierający jeden kropka na początku wiersza.

Jeśli definicja wiadomości zawiera tekst komunikatu dla więcej niż jednego języka, każdy język wymaga własnej instrukcji Language, tekstu wiadomości i zakończenia nowego wiersza z kropką. Na przykład:

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

Możesz określić następujące sekwencje ucieczki do formatowania tekstu wiadomości do użycia przez podgląd zdarzeń lub aplikację. Znak procentu (%) rozpoczyna wszystkie sekwencje ucieczki. Każdy inny znak po znaku procentu jest wyświetlany bez znaku procentu.

% n[!format_specifier!]

Opisuje wstawkę. Każde wstawianie jest wpisem w tablicy Argumenty w funkcji FormatMessage. Wartość n może być liczbą z zakresu od 1 do 99. Specyfikator formatu jest opcjonalny. Jeśli nie określono żadnej wartości, wartość domyślna to !s!. Aby uzyskać informacje o specyfikatorze formatu, zobacz wsprintf.

Specyfikator formatu może używać * dla precyzji lub szerokości. Po określeniu używają one wstawień numerowanych n+1 i n+2.

%0

Kończy wiersz tekstowy wiadomości bez końcowego znaku nowego wiersza. Może to służyć do kompilowania długiego wiersza lub kończenia komunikatu monitu bez końcowego znaku nowego wiersza.

%.

Generuje jeden okres. Może to służyć do wyświetlania kropki na początku wiersza, który w przeciwnym razie zakończy tekst wiadomości.

%!

Generuje pojedynczy wykrzyknik. Służy do określania wykrzyknika bezpośrednio po wstawieniu.

%%

Generuje znak jednego procentu.

%n

Generuje twardy podział wiersza, gdy występuje na końcu wiersza. Może to być używane z FormatMessage, aby upewnić się, że komunikat pasuje do określonej szerokości.

%b

Generuje znak spacji. Może to służyć do zapewnienia odpowiedniej liczby spacji końcowych w wierszu.

%r

Generuje powrót twardego karetki bez końcowego znaku nowego wiersza.