CString
서식 및 메시지 상자 표시
개체의 서식을 지정하고 구문 분석하기 위해 다양한 함수가 CString
제공됩니다. 개체를 조작 CString
해야 할 때마다 이러한 함수를 사용할 수 있지만 메시지 상자 텍스트에 표시될 문자열의 서식을 지정하는 데 특히 유용합니다.
이 함수 그룹에는 메시지 상자를 표시하는 전역 루틴도 포함됩니다.
CString
함수
속성 | 설명 |
---|---|
AfxExtractSubString |
지정된 소스 문자열에서 단일 문자로 구분된 부분 문자열을 추출합니다. |
AfxFormatString1 |
문자열 테이블에 포함된 문자열의 서식 문자 "%1"에 지정된 문자열을 대체합니다. |
AfxFormatString2 |
문자열 테이블에 포함된 문자열에서 형식 문자 "%1"과 "%2"로 두 문자열을 대체합니다. |
AfxMessageBox |
메시지 상자를 표시합니다. |
요구 사항
머리글 afxwin.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);
}
요구 사항
머리글 afxwin.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
}
요구 사항
머리글 afxwin.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
}
요구 사항
머리글 afxwin.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 키를 누르면 효과가 없습니다.
이 함수는 AfxFormatString1
AfxFormatString2
메시지 상자에 나타나는 텍스트의 서식을 지정하는 데 유용할 수 있습니다.
설명
이 오버로드된 함수의 첫 번째 형식은 메시지 상자에서 가리키는 텍스트 문자열을 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);