CString 서식 및 메시지 상자 표시

개체의 서식을 지정하고 구문 분석하기 위해 다양한 함수가 CString 제공됩니다. 개체를 조작 CString 해야 할 때마다 이러한 함수를 사용할 수 있지만 메시지 상자 텍스트에 표시될 문자열의 서식을 지정하는 데 특히 유용합니다.

이 함수 그룹에는 메시지 상자를 표시하는 전역 루틴도 포함됩니다.

CString 함수

이름 설명
AfxExtractSubString 지정된 소스 문자열에서 단일 문자로 구분된 부분 문자열을 추출합니다.
AfxFormatString1 문자열 테이블에 포함된 문자열의 서식 문자 "%1"에 지정된 문자열을 대체합니다.
AfxFormatString2 문자열 테이블에 포함된 문자열에서 형식 문자 "%1"과 "%2"로 두 문자열을 대체합니다.
AfxMessageBox 메시지 상자를 표시합니다.

요구 사항

Headerafxwin.h

AfxExtractSubString

이 전역 함수는 지정된 소스 문자열에서 부분 문자열을 추출하는 데 사용할 수 있습니다.

BOOL AFXAPI AfxExtractSubString (
    CString& rString,
    LPCTSTR lpszFullString,
    int iSubString,
    TCHAR chSep  = '\n');

매개 변수

rString
개별 부분 문자열을 CString 받을 개체에 대한 참조입니다.

lpszFullString
추출할 문자열의 전체 텍스트를 포함하는 문자열입니다.

iSubString
추출할 부분 문자열의 인덱스(0부터 시작하는 인덱스)입니다 lpszFullString.

chSep
부분 문자열을 구분하는 데 사용되는 구분 기호 문자입니다.

Return Value

TRUE함수가 제공된 인덱스에서 부분 문자열을 성공적으로 추출한 경우 그렇지 않으면 . FALSE

설명

이 함수는 알려진 단일 문자가 각 부분 문자열을 구분할 때 소스 문자열에서 여러 부분 문자열을 추출하는 데 유용합니다. 이 함수는 호출할 때마다 매개 변수의 lpszFullString 시작 부분에서 검색합니다.

이 함수는 지정된 구분 기호 문자가 +1개인 경우를 찾지 iSubString않고 함수가 끝으로 설정 NULL 되거나 끝에 lpszFullString 도달하면 lpszFullString 반환 FALSE 됩니다. 매개 변수가 rString 원래 값으로 설정된 NULL경우 lpszFullString 수정되지 않습니다. 그렇지 않으면 rString 지정된 인덱스에서 부분 문자열을 추출할 수 없는 경우 매개 변수가 빈 문자열로 설정됩니다.

예시

// The following example extracts a series of name, value pairs from a
// given source string:

// Input string consisting of a number of name, value pairs
LPCTSTR lpszSource = _T("\"Name\"=\"John Smith\"\n")
_T("\"Company\"=\"Contoso, Ltd\"\n\"Salary\"=\"25,000\"");

CString strNameValue; // an individual name, value pair

int i = 0; // substring index to extract
while (AfxExtractSubString(strNameValue, lpszSource, i))
{
   // Prepare to move to the next substring
   i++;

   CString strName, strValue; // individual name and value elements

   // Attempt to extract the name element from the pair
   if (!AfxExtractSubString(strName, strNameValue, 0, _T('=')))
   {
      // Pass an error message to the debugger for display
      OutputDebugString(_T("Error extracting name\r\n"));
      continue;
   }

   // Attempt to extract the value element from the pair
   if (!AfxExtractSubString(strValue, strNameValue, 1, _T('=')))
   {
      // Pass an error message to the debugger for display
      OutputDebugString(_T("Error extracting value element\r\n"));
      continue;
   }

   // Pass the name, value pair to the debugger for display
   CString strOutput = strName + _T(" equals ") + strValue + _T("\r\n");
   OutputDebugString(strOutput);
}

요구 사항

Headerafxwin.h

AfxFormatString1

로 식별되는 템플릿 문자열 리소스의 문자 "%1" 인스턴스에 대해 가리키는 lpsz1 문자열을 nIDS대체합니다.

void  AfxFormatString1(
    CString& rString,
    UINT nIDS,
    LPCTSTR lpsz1);

매개 변수

rString
대체가 수행된 후 결과 문자열을 포함하는 CString 개체에 대한 참조입니다.

nIDS
대체가 수행될 템플릿 문자열의 리소스 ID입니다.

lpsz1
템플릿 문자열의 서식 문자를 "%1" 대체할 문자열입니다.

설명

새로 구성된 문자열은 에 rString저장됩니다. 예를 들어 문자열 테이블의 문자열이 "File %1 not found"이고 lpsz1 , rString"C:\MYFILE.TXT"으면 문자열"File C:\MYFILE.TXT not found"이 포함됩니다. 이 함수는 메시지 상자와 다른 창에 서식 지정 문자열을 전송하는 데 유용합니다.

형식 문자 "%1" 가 문자열에 두 번 이상 나타나면 여러 대체가 이루어집니다.

예시

void DisplayFileNotFoundMessage(LPCTSTR pszFileName)
{
   CString strMessage;

   // The IDS_FILENOTFOUND string resource contains "Error: File %1 not found"
   AfxFormatString1(strMessage, IDS_FILENOTFOUND, pszFileName);
   // In the previous call, substitute the actual file name for the
   // %1 placeholder
   AfxMessageBox(strMessage);  // Display the error message
}

요구 사항

Headerafxwin.h

AfxFormatString2

문자 인스턴스에 대해 가리키는 lpsz1 문자열과 문자 "%1"인스턴스에 대해 가리키는 lpsz2 문자열을 템플릿 문자열 리소스nIDS에서 바꿉니다"%2".

void AfxFormatString2(
    CString& rString,
    UINT nIDS,
    LPCTSTR lpsz1,
    LPCTSTR lpsz2);

매개 변수

rString
대체가 CString 수행된 후 결과 문자열을 포함할 참조입니다.

nIDS
대체가 수행될 템플릿 문자열의 문자열 테이블 ID입니다.

lpsz1
템플릿 문자열의 서식 문자를 "%1" 대체할 문자열입니다.

lpsz2
템플릿 문자열의 서식 문자를 "%2" 대체할 문자열입니다.

설명

새로 구성된 문자열은 에 rString저장됩니다. 예를 들어 문자열 테이블의 문자열이 "File %1 not found in directory %2"이고, lpsz1 가리키"MYFILE.TXT"lpsz2, rString 가리키는 "C:\MYDIR"경우 문자열"File MYFILE.TXT not found in directory C:\MYDIR"이 포함됩니다.

문자 "%1" 서식을 지정하거나 "%2" 문자열에 두 번 이상 표시되면 여러 대체가 이루어집니다. 숫자 순서일 필요는 없습니다.

예시

void DisplayFileNotFoundMessage(LPCTSTR pszFileName, LPCTSTR pszDirectory)
{
   CString strMessage;

   // The IDS_FILENOTFOUND string resource contains "Error: File %1 not 
   // found in directory %2"
   AfxFormatString2(strMessage, IDS_FILENOTFOUND2, pszFileName, pszDirectory);
   // In the previous call, substitute the actual file and directory 
   // names into the message string
   AfxMessageBox(strMessage);  // Display the error message
}

요구 사항

Headerafxwin.h

AfxMessageBox

화면에 메시지 상자를 표시합니다.

int AfxMessageBox(
    LPCTSTR lpszText,
    UINT nType = MB_OK,
    UINT nIDHelp = 0);

int AFXAPI AfxMessageBox(
    UINT nIDPrompt,
    UINT nType = MB_OK,
    UINT nIDHelp = (UINT) -1);

매개 변수

lpszText
CString 메시지 상자에 표시할 메시지를 포함하는 개체 또는 null로 끝나는 문자열을 가리킵니다.

nType
메시지 상자의 스타일입니다. 상자에 메시지 상자 스타일을 적용합니다.

nIDHelp
메시지에 대한 도움말 컨텍스트 ID입니다. 0은 애플리케이션의 기본 도움말 컨텍스트가 사용됨을 나타냅니다.

nIDPrompt
문자열 테이블의 문자열을 참조하는 데 사용되는 고유 ID입니다.

Return Value

메모리가 부족하여 메시지 상자를 표시할 수 없는 경우 0입니다. 그렇지 않으면 다음 값 중 하나가 반환됩니다.

  • IDABORT 중단 단추가 선택되었습니다.

  • IDCANCEL 취소 단추가 선택되었습니다.

  • IDIGNORE 무시 단추가 선택되었습니다.

  • IDNO 아니요 단추가 선택되었습니다.

  • IDOK 확인 단추가 선택되었습니다.

  • IDRETRY 다시 시도 단추가 선택되었습니다.

  • IDYES 예 단추가 선택되었습니다.

메시지 상자에 취소 단추 IDCANCEL 가 있는 경우 ESC 키를 누르거나 취소 단추를 선택하면 값이 반환됩니다. 메시지 상자에 취소 단추가 없으면 ESC 키를 누르면 효과가 없습니다.

이 함수는 AfxFormatString1AfxFormatString2 메시지 상자에 나타나는 텍스트의 서식을 지정하는 데 유용할 수 있습니다.

설명

이 오버로드된 함수의 첫 번째 형식은 메시지 상자에서 가리키는 텍스트 문자열을 lpszText 표시하고 도움말 컨텍스트를 설명하는 데 사용합니다 nIDHelp . 도움말 컨텍스트는 사용자가 도움말 키(일반적으로 F1)를 누를 때 연결된 도움말 항목으로 이동하는 데 사용됩니다.

함수의 두 번째 형식은 ID nIDPrompt 가 있는 문자열 리소스를 사용하여 메시지 상자에 메시지를 표시합니다. 연결된 도움말 페이지는 의 값을 통해 찾을 수 있습니다 nIDHelp. 기본값 nIDHelp 이 사용되는 경우(-1), 문자열 리소스 ID nIDPrompt는 도움말 컨텍스트에 사용됩니다. 도움말 컨텍스트 정의에 대한 자세한 내용은 Technical Note 28을 참조하세요.

예시

// A simple message box, with only the OK button.
AfxMessageBox(_T("Simple message box."));

// A message box that uses a string from a string table
// with yes and no buttons and the stop icon.
// NOTE: nStringID is an integer that contains a valid id of
// a string in the current resource.
AfxMessageBox(nStringID, MB_YESNO | MB_ICONSTOP);

참고 항목

매크로 및 전역
CStringT 클래스