İleti Metin Dosyaları
İletiler bir ileti metin dosyasında tanımlanır. İleti derleyicisi her iletiye numara atar ve uygulamanın sembolik sabit kullanarak iletiye erişmek için kullanabileceği bir C/C++ ekleme dosyası oluşturur.
İleti metin dosyasındaki deyimler için genel söz dizimi aşağıdaki gibidir:
anahtar sözcük =değer
Eşittir işaretinin etrafındaki boşluklar yoksayılır ve değer bir sonraki anahtar sözcük/değer çiftinden boşlukla (satır sonları dahil) sınırlandırılır. Anahtar sözcük adlarını karşılaştırırken büyük/küçük harf yoksayılır. değeri bölümü, C/C++ söz dizimi kullanılarak sayısal bir tamsayı sabiti, C/C++ tanımlayıcıları için kurallara uygun bir simge adı veya nokta olmadan 8 karakter veya daha az karakter içeren bir dosya adı olabilir.
Örnek ileti dosyası için bkz. Örnek İleti Metin Dosyası.
Yorum
İleti metin dosyasında açıklama satırlarına izin verilir. Noktalı virgül (;) satırın sonunda sona eren bir açıklama başlatır. İleti derleyicisi tarafından oluşturulan üst bilgi dosyasının uygulamanızda derlenecek şekilde, C/C++ tek satırlı açıklama göstergesiyle (//) noktalı virgül kullanın.
;// This is a single-line comment.
Blok açıklaması için her satıra noktalı virgülle başlayın, ardından ilk satırdaki noktalı virgülden sonra bir C/C++ açık blok açıklama göstergesi (/*) ve son satırdaki noktalı virgülden sonra blok açıklama göstergesini (*/) kapatın.
;/* This is a block comment.
; It spans multiple lines.
;*/
Üst Bilgi Bölümü
İleti metin dosyası, dosyanın gövdesindeki ileti tanımları tarafından kullanılacak adları ve dil tanımlayıcılarını tanımlayan bir üst bilgi içerir. Üst bilgi, aşağıdaki deyimlerden sıfır veya daha fazlasını içerir.
Deyim söz dizimi | Açıklama |
---|---|
MessageIdTypedef=tür | İleti tanımında kullanılacak tür: #define ad ((tür)0xnnnnnnnnn) ) türü, DWORDgibi ileti kodunun tamamını barındıracak kadar büyük olmalıdır. Tür, uygulama kaynak kodunda tanımlanan bir tür de olabilir. tür için varsayılan değer boş olduğundan tür ataması kullanılmaz. Bu deyim üst bilgide ve ileti tanımı bölümünde gerektiği sıklıkta belirtilebilir. |
SeverityNames=(ad=sayı[:ad]) | İleti tanımında önem derecesi için izin verilen adlar kümesi. Her önem derecesi adıyla ilişkili, 30 bit sola kaydırıldığında, ileti kodunu oluşturmak için özellik ve ileti kimliği değerleriyle mantıksal-OR'ya bit deseni veren bir sayıdır. 2 bit'e sığmayan herhangi bir önem derecesi değeri hatadır. Önem derecesi kodları sembolik adlar da verilebilir. Varsayılan değer şu şekilde tanımlanır: SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3) |
FacilityNames=(ad=sayı[:ad]) | bir ileti tanımındaki tesis değerleri için izin verilen adlar kümesi. Her tesis adıyla ilişkili, 16 bit sola kaydırıldığında bit desenini mantıksal-OR'ya ileti kodunu oluşturmak için önem derecesi ve ileti kimliği değerleriyle veren bir sayıdır. 12 bit'e sığmayan herhangi bir tesis değeri hatadır. Bu 4096 tesis kodları için izin verir; ilk 256 kod sistem kullanımı için ayrılmıştır. Tesis kodlarına sembolik adlar da verilebilir. Varsayılan değer şu şekilde tanımlanır: FacilityNames=( System=0x0FF Application=0xFFF) |
LanguageNames=(ad=sayı:dosya adı) | İleti tanımındaki dil değerleri için izin verilen adlar kümesi. Sayı, kaynak tablosunda dil tanımlayıcısı olarak kullanılır. Belirtilen dosya, bu dil için iletileri içerir. Genellikle ileti derleyicisi tarafından oluşturulan bir .bin dosyasıdır. Örnek değer: LanguageNames=(English=0x409:MSG00409) Dil tanımlayıcılarının listesi için bkz. https://go.microsoft.com/fwlink/p/?linkid=190280. |
OutputBase=sayı | İleti derleyicisinin üst bilgi dosyasına yazdığı ileti sabitleri için çıkış radiksi. Varsa, bu değer -d anahtarını geçersiz kılar. Bu sayı 10 (ondalık) veya 16 (onaltılık) olabilir. |
İleti Tanımları
İleti metin dosyası, üst bilgi bölümünden sonra sıfır veya daha fazla ileti tanımı içerir. Aşağıdaki tabloda ileti tanımı deyimleri açıklanmaktadır. MessageId deyimi, ileti tanımının başlangıcını işaretler. Önem Derecesi ve Tesis deyimleri isteğe bağlıdır.
Deyim söz dizimi | Açıklama |
---|---|
MessageId=[sayı|+sayı] | İletinin tanımlayıcısı. Bu deyim gereklidir, ancak değer isteğe bağlıdır. Hiçbir değer belirtilmezse, kullanılan değer tesis için önceki değerdir ve artı bir değerdir. Değer artı işaretiyle belirtilirse, kullanılan değer tesis için önceki değer ve artı işaretinden sonraki sayıdır. Belirtilen herhangi bir değer 16 bite sığmalıdır. İleti değerinin önem derecesi, tesis ve ileti kimliğinden nasıl oluşturulduğu hakkında daha fazla bilgi için Winerror.h dosyasındaki diyagrama bakın. Bu üst bilgi dosyası sistem için hata kodlarını tanımlar. |
Önem derecesi=ad | Üst bilgide SeverityNames tarafından belirtilen değerlerden biri. Bu deyim isteğe bağlıdır. Değer belirtilmezse, kullanılan değer ileti tanımı için son belirtilen değerdir. İlk ileti tanımı için varsayılan değer Severity=Success |
Facility=adı | Üst bilgide FacilityNames tarafından belirtilen değerlerden biri. Bu deyim isteğe bağlıdır. Değer belirtilmezse, kullanılan değer ileti tanımı için son belirtilen değerdir. İlk ileti tanımı için varsayılan değer Facility=Application |
SymbolicName=adı | C/C++ sembolik sabitini ileti koduyla ilişkilendirir. İleti tanımında şu şekilde kullanılır: #define ad ((tür)0xnnnnnnnnn) |
OutputBase={sayı} | İleti için çıkış yarıçapı, ileti derleyicisinin üst bilgi dosyasına yazdığı sabitleri oluşturur. Varsa, bu değer -d anahtarını geçersiz kılar. Bu sayı 10 (ondalık) veya 16 (onaltılık) olabilir. |
Language=adı | Üst bilgide LanguageNames tarafından belirtilen değerlerden biri. Bu deyim isteğe bağlıdır. Değer belirtilmezse, kullanılan değer ileti tanımı için son belirtilen değerdir. İlk ileti tanımı için varsayılan değer şu şekildedir: Language=English |
İleti metni | İletinin metni. İleti ikili dosyasına eklenir. Ayrıca, ileti tanımının hemen önündeki açıklama bloğundaki üst bilgi dosyasına da eklenir. |
. | İleti metni, satırın başında tek bir nokta içeren yeni bir satır tarafından sonlandırılır. |
İleti tanımı birden fazla dil için ileti metni içeriyorsa, her dil kendi Dil deyimini, ileti metnini ve noktayla yeni satırı sonlandırmayı gerektirir. Mesela:
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>
.
Olay görüntüleyicisi veya uygulamanız tarafından kullanılacak ileti metnini biçimlendirmek için aşağıdaki kaçış dizilerini belirtebilirsiniz. Yüzde işareti karakteri (%) tüm kaçış dizilerini başlatır. Yüzde işaretinden sonraki diğer karakterler yüzde işareti olmadan görüntülenir.
-
% n[!format_specifier!]
-
Ekleme işlemi açıklanır. Her ekleme, FormatMessage işlevindeki Arguments dizisindeki bir girdidir. n değeri 1 ile 99 arasında bir sayı olabilir. Biçim belirtici isteğe bağlıdır. Hiçbir değer belirtilmezse, varsayılan değer !s! olur. Biçim tanımlayıcısı hakkında bilgi için bkz. wsprintf.
Biçim belirtici duyarlık veya genişlik için * kullanabilir. Belirtildiğinde, n +1 ve n+2numaralandırılmış ekler tüketir.
-
%0
-
İleti metin satırını sondaki yeni satır karakteri olmadan sonlandırır. Bu, uzun bir satır oluşturmak veya sondaki yeni satır karakteri olmadan bir istem iletisini sonlandırmak için kullanılabilir.
-
%.
-
Tek bir nokta oluşturur. Bu, satırın başında bir nokta görüntülemek için kullanılabilir; aksi takdirde ileti metni sonlandırılabilir.
-
%!
-
Tek bir ünlem işareti oluşturur. Bu, eklemeden hemen sonra ünlem işareti belirtmek için kullanılabilir.
-
%%
-
Tek bir yüzde işareti oluşturur.
-
%n
-
Bir satırın sonunda gerçekleştiğinde bir sabit satır sonu oluşturur. Bu, iletinin belirli bir genişliğe uyduğundan emin olmak için FormatMessage ile kullanılabilir.
-
%b
-
Bir boşluk karakteri oluşturur. Bu, bir satırda uygun sayıda sondaki boşluğu sağlamak için kullanılabilir.
-
%r
-
Sondaki yeni satır karakteri olmadan bir sabit satır başı oluşturur.