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.