Bagikan melalui


File Teks Pesan

Pesan ditentukan dalam file teks pesan. Pengkompilasi pesan menetapkan angka untuk setiap pesan, dan menghasilkan C/C++ menyertakan file yang dapat digunakan aplikasi untuk mengakses pesan menggunakan konstanta simbolis.

Sintaks umum untuk pernyataan dalam file teks pesan adalah sebagai berikut:

Kata kunci=Nilai

Spasi di sekitar tanda sama dengan diabaikan, dan nilai dibatasi oleh spasi kosong (termasuk hentian baris) dari pasangan kata kunci/nilai berikutnya. Kasus diabaikan saat membandingkan dengan nama kata kunci. Bagian nilai dapat berupa konstanta bilangan bulat numerik menggunakan sintaks C/C++, nama simbol yang mengikuti aturan untuk pengidentifikasi C/C++, atau nama file dengan 8 karakter atau kurang, tanpa titik.

Untuk contoh file pesan, lihat Contoh File Teks Pesan.

Komentar

Baris komentar diperbolehkan dalam file teks pesan. Titik koma (;) memulai komentar yang berakhir di akhir baris. Ikuti titik koma dengan indikator komentar baris tunggal C/C++ (//) sehingga file header yang dihasilkan oleh pengkompilasi pesan akan dikompilasi dalam aplikasi Anda.

;// This is a single-line comment.

Untuk komentar blok, mulai setiap baris dengan titik koma, lalu tempatkan indikator komentar blok terbuka C/C++ (/*) setelah titik koma pada baris pertama dan indikator komentar blok tutup (*/) setelah titik koma pada baris terakhir.

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

Bagian Header

File teks pesan berisi header yang menentukan nama dan pengidentifikasi bahasa untuk digunakan oleh definisi pesan dalam isi file. Header berisi nol atau beberapa pernyataan berikut.

Sintaks pernyataan Deskripsi
MessageIdTypedef=type Jenis yang akan digunakan dalam definisi pesan sebagai berikut: nama #define ((jenis)0xnnnnnnnnnn)
Jenis harus cukup besar untuk mengakomodasi seluruh kode pesan, seperti DWORD. Jenisnya juga dapat menjadi jenis yang ditentukan dalam kode sumber aplikasi. Nilai default untuk jenis kosong, jadi tidak ada jenis cast yang digunakan.
Pernyataan ini dapat ditentukan di header dan sesering yang diperlukan di bagian definisi pesan.
SeverityNames=(name=number[:name]) Kumpulan nama yang diizinkan untuk tingkat keparahan dalam definisi pesan. Terkait dengan setiap nama tingkat keparahan adalah angka yang, ketika digeser ke kiri oleh 30 bit, memberikan pola bit ke logis-OR dengan fasilitas dan nilai ID pesan untuk membentuk kode pesan. Nilai tingkat keparahan apa pun yang tidak cocok dalam 2 bit adalah kesalahan. Kode tingkat keparahan juga dapat diberikan nama simbolis. Nilai default didefinisikan sebagai berikut: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=(name=number[:name]) Kumpulan nama yang diizinkan untuk nilai fasilitas dalam definisi pesan. Terkait dengan setiap nama fasilitas adalah angka yang, ketika digeser ke kiri 16 bit, memberikan pola bit ke logis-OR dengan tingkat keparahan dan nilai ID pesan untuk membentuk kode pesan. Nilai fasilitas apa pun yang tidak cocok dalam 12 bit adalah kesalahan. Ini memungkinkan 4096 kode fasilitas; 256 kode pertama disediakan untuk penggunaan sistem. Kode fasilitas juga dapat diberikan nama simbolis. Nilai default didefinisikan sebagai berikut: FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=(name=number:filename) Kumpulan nama yang diizinkan untuk nilai bahasa dalam definisi pesan. Angka tersebut digunakan sebagai pengidentifikasi bahasa dalam tabel sumber daya. File yang ditentukan berisi pesan untuk bahasa tersebut. Biasanya ini adalah file .bin yang dihasilkan oleh pengkompilasi pesan.
Contoh nilai adalah: LanguageNames=(English=0x409:MSG00409)
Untuk daftar pengidentifikasi bahasa, lihat https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase=number Radix output untuk konstanta pesan yang ditulis pengkompilasi pesan ke file header. Jika ada, nilai ini akan mengambil alih sakelar -d. Angka ini dapat berupa 10 (desimal) atau 16 (heksadesimal).

Definisi Pesan

File teks pesan berisi nol atau beberapa definisi pesan setelah bagian header. Tabel berikut ini menjelaskan pernyataan definisi pesan. Pernyataan MessageId menandai awal definisi pesan. Pernyataan Tingkat Keparahan dan Fasilitas bersifat opsional.

Sintaks pernyataan Deskripsi
MessageId=[nomor nomor|+] Pengidentifikasi untuk pesan. Pernyataan ini diperlukan, meskipun nilainya opsional. Jika tidak ada nilai yang ditentukan, nilai yang digunakan adalah nilai sebelumnya untuk fasilitas, ditambah satu. Jika nilai ditentukan dengan tanda plus, nilai yang digunakan adalah nilai sebelumnya untuk fasilitas, ditambah angka setelah tanda plus. Nilai apa pun yang ditentukan harus pas dalam 16 bit. Untuk detail selengkapnya tentang bagaimana nilai pesan terbentuk dari tingkat keparahan, fasilitas, dan ID pesan, lihat diagram di Winerror.h. File header ini mendefinisikan kode galat untuk sistem.
Tingkat keparahan=nama Salah satu nilai yang ditentukan oleh SeverityNames di header . Pernyataan ini bersifat opsional. Jika tidak ada nilai yang ditentukan, nilai yang digunakan adalah nilai terakhir yang ditentukan untuk definisi pesan. Default untuk definisi pesan pertama adalah Severity=Success
Fasilitas=nama Salah satu nilai yang ditentukan oleh FacilityNames di header . Pernyataan ini bersifat opsional. Jika tidak ada nilai yang ditentukan, nilai yang digunakan adalah nilai terakhir yang ditentukan untuk definisi pesan. Default untuk definisi pesan pertama adalah Facility=Application
SymbolicName=name Mengaitkan konstanta simbolis C/C++ dengan kode pesan. Ini digunakan dalam definisi pesan sebagai berikut: nama #define ((jenis)0xnnnnnnnn)
OutputBase={number} Radix output untuk pesan konstanta pengkompilasi pesan menulis ke file header. Jika ada, nilai ini akan mengambil alih sakelar -d. Angka ini dapat berupa 10 (desimal) atau 16 (heksadesimal).
Bahasa=nama Salah satu nilai yang ditentukan oleh LanguageNames di header . Pernyataan ini bersifat opsional. Jika tidak ada nilai yang ditentukan, nilai yang digunakan adalah nilai terakhir yang ditentukan untuk definisi pesan. Default untuk definisi pesan pertama adalah sebagai berikut: Language=English
teks pesan Teks untuk pesan. Ini disertakan dalam file biner pesan. Ini juga disertakan dalam file header di blok komentar yang secara langsung mendahului definisi pesan.
. Teks pesan dihentikan oleh baris baru yang berisi satu titik di awal baris.

Jika definisi pesan menyertakan teks pesan untuk lebih dari satu bahasa, setiap bahasa memerlukan pernyataan Bahasa, teks pesan, dan mengakhiri baris baru dengan titik. Contohnya:

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

Anda dapat menentukan urutan escape berikut untuk memformat teks pesan untuk digunakan oleh penampil peristiwa atau aplikasi Anda. Karakter tanda persen (%) memulai semua urutan escape. Karakter lain yang mengikuti tanda persen ditampilkan tanpa tanda persen.

% n[! format_specifier!]

Menjelaskan penyisipan. Setiap sisipan adalah entri dalam array Argumen dalam fungsi FormatMessage . Nilai n bisa berupa angka antara 1 dan 99. Penentu format bersifat opsional. Jika tidak ada nilai yang ditentukan, defaultnya adalah !s!. Untuk informasi tentang penentu format, lihat wsprintf.

Penentu format dapat menggunakan * untuk presisi atau lebar. Ketika ditentukan, mereka menggunakan sisipan bernomor n+1 dan n+2.

%0

Mengakhiri baris teks pesan tanpa karakter baris baru berikutnya. Ini dapat digunakan untuk membangun garis panjang atau mengakhiri pesan prompt tanpa karakter baris baru berikutnya.

%.

Menghasilkan satu periode. Ini dapat digunakan untuk menampilkan titik di awal baris, yang jika tidak akan mengakhiri teks pesan.

%!

Menghasilkan satu tanda seru. Ini dapat digunakan untuk menentukan tanda seru segera setelah penyisipan.

%%

Menghasilkan tanda persen tunggal.

%n

Menghasilkan pemisah garis keras ketika terjadi di akhir baris. Ini dapat digunakan dengan FormatMessage untuk memastikan bahwa pesan sesuai dengan lebar tertentu.

%b

Menghasilkan karakter spasi. Ini dapat digunakan untuk memastikan jumlah spasi berikutnya yang sesuai pada baris.

%r

Menghasilkan pengembalian pengangkutan keras tanpa karakter garis baru berikutnya.