formatmessage 예제

Sem imagem cadastrada

형식 문자열에는 문자열의 너비 및 정밀도 지정기와 정수에 대한 너비 지정기가 포함될 수 있습니다. 별표()를 사용하여 너비와 정밀도를 지정합니다. 예를 들어 %1!입니다. * s! 또는 %1!*u!. FormatMessage API 호출은 매우 강력하며 모든 종류의 메시지를 발행하는 데 특히 유용합니다. 이것은 FormatMessage 사용에 대한 전체 자습서가 아니라 호출의 가장 효과적인 용도 중 하나의 예입니다. 아래와 같은 메시지와 같은 메시지가 표시되는 것보다 더 불쾌한 것은 없습니다: FormatMessage 함수는 GetLastError에서 반환된 시스템 오류 코드에 대한 오류 메시지 문자열을 가져오는 데 사용할 수 있습니다. 예를 들어 마지막 오류 코드 검색을 참조하세요. 너비 및 정밀도 지정기를 사용하지 않는 경우 삽입 번호는 입력 인수에 직접 해당합니다.

예를 들어 소스 문자열이 “%1 %2 %1″이고 입력 인수가 “Bill” 및 “Bob”인 경우 형식이 지정된 출력 문자열은 “Bill Bob Bill”입니다. 이전 예제와 같이 “Bill”을 반복하려면 인수에 “Bill”을 두 번 포함해야 합니다. 예를 들어 소스 문자열이 “%1!***s!s! %4 %5!*s!”, 인수는 4, 2, Bill, Bob, 6, Bill (FORMAT_MESSAGE_ARGUMENT_ARRAY 플래그를 사용하는 경우)일 수 있습니다. 그런 다음 서식이 지정된 문자열은 “Bi Bob Bill”입니다. 백분율 문자를 따르는 다른 모든 비자릿수 문자는 백분율 문자 없이 출력 메시지에 서식이 지정됩니다. 다음은 몇 가지 예입니다. CStdioFile::Open 호출에 실패한 후 수행된 시계 창의 화면 스냅샷입니다. 당신이 볼 수 있듯이, 오류 메시지는 잘 당신에게 설명된다, 프로그래머. 오류가 사용자에게 표시되어야하는 경우 내 ErrorString 함수를 사용하여 멋진 CString을 얻을 수 있습니다.

메시지 코드가 사용자에게 아무 소용이 없다고 생각하더라도 어쨌든 표시하십시오. 예를 들어 양식의 메시지는 실제로 매우 유용합니다. 다음은 AfxMessageBox의 시뮬레이션 된 디스플레이입니다. 기술 지원 사람들은 크게 도움이 될 것입니다. 그러나 너비 및 정밀도 지정기를 사용하는 경우 삽입 번호는 입력 인수와 직접 일치하지 않습니다. 예를 들어 이전 예제의 삽입 번호는 “%1!***s!s로 변경될 수 있습니다! %4 %5!*s!” 이것은 이해할 수 없습니다. 파일을 열 수 없습니다.