다음을 통해 공유


메시지 텍스트 파일

메시지는 메시지 텍스트 파일에 정의됩니다. 메시지 컴파일러는 각 메시지에 숫자를 할당하고 애플리케이션이 기호 상수를 사용하여 메시지에 액세스하는 데 사용할 수 있는 C/C++ 포함 파일을 생성합니다.

메시지 텍스트 파일의 문에 대한 일반적인 구문은 다음과 같습니다.

= 키워드(keyword)

등호 주위의 공백은 무시되고 값은 다음 키워드(keyword)/값 쌍의 공백(줄 바꿈 포함)으로 구분됩니다. 대/소문자를 키워드(keyword) 이름과 비교할 때 무시됩니다. 부분은 C/C++ 구문을 사용하는 숫자 정수 상수, C/C++ 식별자에 대한 규칙을 따르는 기호 이름 또는 마침표 없이 8자 이하의 파일 이름이 될 수 있습니다.

예제 메시지 파일은 샘플 메시지 텍스트 파일을 참조하세요.

의견

메시지 텍스트 파일에서 주석 줄을 사용할 수 있습니다. 세미콜론(;) 는 줄의 끝에서 끝나는 주석을 시작합니다. 메시지 컴파일러에서 생성된 헤더 파일이 애플리케이션에서 컴파일되도록 C/C++ 단일 줄 주석 표시기(//)를 사용하여 세미콜론을 따릅니다.

;// This is a single-line comment.

블록 주석의 경우 세미콜론으로 각 줄을 시작한 다음, 첫 번째 줄의 세미콜론 다음에 C/C++ 열린 블록 주석 표시기(/*)를 배치하고 마지막 줄의 세미콜론 다음에 닫기 블록 주석 표시기(*/)를 배치합니다.

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

헤더 섹션

메시지 텍스트 파일에는 파일 본문의 메시지 정의에서 사용할 이름 및 언어 식별자를 정의하는 헤더가 포함되어 있습니다. 헤더에는 다음 명령문이 0개 이상 포함되어 있습니다.

문 구문 설명
MessageIdTypedef=type 메시지 정의에서 다음과 같이 사용할 형식: #define 이름 (((type)0xnnnnnnnn)
형식은 DWORD와 같은 전체 메시지 코드를 수용할 수 있을 만큼 커야 합니다. 형식은 애플리케이션 소스 코드에 정의된 형식일 수도 있습니다. 형식의 기본값은 비어 있으므로 형식 캐스트가 사용되지 않습니다.
이 문은 헤더에서 지정할 수 있으며 메시지 정의 섹션에서 필요한 만큼 자주 지정할 수 있습니다.
SeverityNames=(name=number[:name]) 메시지 정의의 심각도에 허용되는 이름 집합입니다. 각 심각도 이름과 연결된 숫자는 왼쪽으로 30비트씩 이동하면 기능 및 메시지 ID 값을 사용하여 논리 OR에 비트 패턴을 제공하여 메시지 코드를 형성합니다. 2비트에서 맞지 않는 심각도 값은 오류입니다. 심각도 코드에는 기호 이름도 지정할 수 있습니다. 기본값은 다음과 같이 정의됩니다. SeverityNames=( Success=0x0 Informational=0x1 Warning=0x2 Error=0x3)
FacilityNames=(name=number[:name]) 메시지 정의의 기능 값에 허용되는 이름 집합입니다. 각 기능 이름과 연결된 숫자는 왼쪽으로 16비트씩 이동하면 심각도 및 메시지 ID 값을 사용하여 비트 패턴을 논리 OR로 제공하여 메시지 코드를 형성합니다. 12비트 에 맞지 않는 모든 시설 값은 오류입니다. 이렇게 하면 4096개의 시설 코드가 허용됩니다. 처음 256개 코드는 시스템 사용을 위해 예약되어 있습니다. 시설 코드에는 기호 이름도 지정할 수 있습니다. 기본값은 다음과 같이 정의됩니다. FacilityNames=( System=0x0FF Application=0xFFF)
LanguageNames=(name=number:filename) 메시지 정의의 언어 값에 허용되는 이름 집합입니다. 이 숫자는 리소스 테이블의 언어 식별자로 사용됩니다. 지정된 파일에는 해당 언어에 대한 메시지가 포함됩니다. 일반적으로 메시지 컴파일러에서 생성된 .bin 파일입니다.
예제 값은 LanguageNames=(English=0x409:MSG00409)입니다.
언어 식별자 목록은 를 참조하세요 https://go.microsoft.com/fwlink/p/?linkid=190280.
OutputBase=number 메시지 컴파일러가 헤더 파일에 쓰는 메시지 상수의 출력 radix입니다. 있는 경우 이 값은 -d 스위치를 재정의합니다. 이 숫자는 10(10진수) 또는 16(16진수)일 수 있습니다.

메시지 정의

메시지 텍스트 파일에는 헤더 섹션 다음에 0개 이상의 메시지 정의가 포함되어 있습니다. 다음 표에서는 메시지 정의 문을 설명합니다. MessageId 문은 메시지 정의의 시작을 표시합니다. 심각도 및 시설 문은 선택 사항입니다.

문 구문 Description
MessageId=[number|+number] 메시지의 식별자입니다. 값은 선택 사항이지만 이 문은 필수입니다. 값이 지정되지 않은 경우 사용된 값은 시설의 이전 값과 1을 더한 값입니다. 값이 더하기 기호로 지정된 경우 사용된 값은 시설의 이전 값과 더하기 기호 뒤의 숫자입니다. 지정된 모든 값은 16비트 단위로 맞아야 합니다. 심각도, 기능 및 메시지 ID에서 메시지 값이 형성되는 방법에 대한 자세한 내용은 Winerror.h의 다이어그램을 참조하세요. 이 헤더 파일은 시스템에 대한 오류 코드를 정의합니다.
Severity=name 헤더에서 SeverityNames로 지정된 값 중 하나입니다. 이 문은 선택 사항입니다. 값을 지정하지 않으면 사용된 값은 메시지 정의에 마지막으로 지정된 값입니다. 첫 번째 메시지 정의의 기본값은 입니다. Severity=Success
Facility=name 헤더의 FacilityNames에 지정된 값 중 하나입니다. 이 문은 선택 사항입니다. 값을 지정하지 않으면 사용된 값은 메시지 정의에 마지막으로 지정된 값입니다. 첫 번째 메시지 정의의 기본값은 입니다. Facility=Application
SymbolicName=name C/C++ 기호 상수를 메시지 코드와 연결합니다. #define 이름 ((유형)0xnnnnnnnnn)과 같이 메시지 정의에 사용됩니다.
OutputBase={number} 메시지 상수에 대한 출력 radix는 메시지 컴파일러가 헤더 파일에 씁니다. 있는 경우 이 값은 -d 스위치를 재정의합니다. 이 숫자는 10(10진수) 또는 16(16진수)일 수 있습니다.
Language=name 헤더에서 LanguageNames로 지정된 값 중 하나입니다. 이 문은 선택 사항입니다. 값을 지정하지 않으면 사용된 값은 메시지 정의에 마지막으로 지정된 값입니다. 첫 번째 메시지 정의의 기본값은 다음과 같습니다. Language=English
메시지 텍스트 메시지의 텍스트입니다. 메시지 이진 파일에 포함됩니다. 메시지 정의 바로 앞에 오는 주석 블록의 헤더 파일에도 포함됩니다.
. 메시지 텍스트는 줄의 시작 부분에 하나의 마침표가 포함된 새 줄에 의해 종료됩니다.

메시지 정의에 둘 이상의 언어에 대한 메시지 텍스트가 포함된 경우 각 언어에는 고유한 Language 문, 메시지 텍스트 및 마침표로 새 줄 종료가 필요합니다. 예:

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

이벤트 뷰어 또는 애플리케이션에서 사용할 메시지 텍스트의 서식을 지정하기 위해 다음 이스케이프 시퀀스를 지정할 수 있습니다. 백분율 기호 문자(%)는 모든 이스케이프 시퀀스를 시작합니다. 백분율 기호 뒤에 있는 다른 문자는 백분율 기호 없이 표시됩니다.

%n[! format_specifier!]

삽입에 대해 설명합니다. 각 삽입은 FormatMessage 함수의 인수 배열에 있는 항목입니다. n 값은 1에서 99 사이의 숫자일 수 있습니다. 형식 지정자는 선택 사항입니다. 값을 지정하지 않으면 기본값은 !s!입니다. 형식 지정자에 대한 자세한 내용은 wsprintf를 참조하세요.

형식 지정자는 정밀도 또는 너비에 *를 사용할 수 있습니다. 지정하면 번호가 매겨진 삽입 n+1 및 n+2를 사용합니다.

%0

후행 줄 바꿈 문자 없이 메시지 텍스트 줄을 종료합니다. 긴 줄을 작성하거나 후행 줄 바꿈 문자 없이 프롬프트 메시지를 종료하는 데 사용할 수 있습니다.

%.

단일 기간을 생성합니다. 이렇게 하면 줄의 시작 부분에 마침표가 표시되며, 그렇지 않으면 메시지 텍스트가 종료됩니다.

%!

단일 느낌표를 생성합니다. 삽입 직후 느낌표를 지정하는 데 사용할 수 있습니다.

%%

단일 백분율 기호를 생성합니다.

%n

줄의 끝에서 발생하는 경우 줄 바꿈을 생성합니다. 이는 FormatMessage 와 함께 사용하여 메시지가 특정 너비에 맞는지 확인할 수 있습니다.

%b

공백 문자를 생성합니다. 줄에 적절한 수의 후행 공백을 보장하는 데 사용할 수 있습니다.

%r

후행 줄선 문자 없이 하드 캐리지 리턴을 생성합니다.