SHMessageBoxCheckW 함수(shlwapi.h)
[SHMessageBoxCheck 는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다.]
사용자에게 추가 발생을 표시하지 않는 옵션을 제공하는 메시지 상자를 표시합니다. 사용자가 이미 메시지 상자를 표시하지 않도록 선택한 경우 함수는 대화 상자를 표시하지 않고 대신 기본값을 반환합니다.
구문
int SHMessageBoxCheckW(
[in, optional] HWND hwnd,
[in] LPCWSTR pszText,
[in] LPCWSTR pszCaption,
UINT uType,
int iDefault,
[in] LPCWSTR pszRegVal
);
매개 변수
[in, optional] hwnd
형식: HWND
메시지 상자의 소유자에 대한 창 핸들입니다. 이 값은 NULL일 수 있습니다.
[in] pszText
형식: LPCTSTR
표시할 메시지를 포함하는 null로 끝나는 문자열에 대한 포인터입니다.
[in] pszCaption
형식: LPCTSTR
메시지 상자의 제목을 포함하는 null로 끝나는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL로 설정되면 제목이 Error!로 설정됩니다.
uType
형식: UINT
메시지 상자의 내용과 동작을 지정하는 플래그입니다. 이 함수는 MessageBox에서 지원하는 플래그의 하위 집합만 지원합니다. 아래에 나열되지 않은 플래그를 사용하는 경우 함수의 동작은 정의되지 않습니다.
다음 플래그 중 하나만 설정하여 표시할 단추를 지정해야 합니다.
MB_OKCANCEL
확인 및 취소 단추가 있는 메시지 상자를 표시합니다.
MB_YESNO
예 및 아니요 단추가 있는 메시지 상자를 표시합니다.
MB_OK
확인 단추가 있는 메시지 상자를 표시합니다.
다음 플래그 중 하나만 설정하여 선택적 아이콘을 표시할 수 있습니다.
MB_ICONHAND
중지 기호 아이콘을 표시합니다.
MB_ICONQUESTION
물음표 아이콘을 표시합니다.
MB_ICONEXCLAMATION
느낌표 아이콘을 표시합니다.
MB_ICONINFORMATION
원에 소문자 "i"가 있는 아이콘을 표시합니다.
iDefault
형식: int
사용자가 메시지 상자를 다시 표시하지 않도록 선택했을 때 함수가 반환하는 값입니다. 사용자가 메시지 상자를 표시하지 않도록 선택하지 않은 경우 메시지 상자가 표시되고 함수는 iDefault를 무시합니다.
[in] pszRegVal
형식: LPCTSTR
이 메시지와 연결할 고유한 문자열 값을 포함하는 null로 끝나는 문자열에 대한 포인터입니다. Microsoft에서 사용하는 값과의 충돌을 방지하려면 이 문자열에 GUID가 포함되어야 합니다. 이 문자열은 종료 null 문자를 포함하여 길이가 REGSTR_MAX_VALUE_LENGTH 문자를 초과해서는 안됩니다.
반환 값
형식: int
사용자가 이미 메시지 상자를 표시하지 않도록 선택한 경우 함수는 iDefault에 할당된 값을 즉시 반환합니다.
사용자가 확인, 취소, 예 또는 아니요 단추를 클릭하면 함수는 각각 IDOK, IDCANCEL, IDYES 또는 IDNO를 반환합니다.
사용자가 캡션 X 단추를 클릭하여 메시지 상자를 닫으면 함수는 IDCANCEL을 반환합니다. 이 값은 MB_OKCANCEL 플래그가 설정되지 않은 경우에도 반환됩니다.
오류가 발생하면 반환 값은 일반적으로 –1입니다. 그러나 특정 메모리 부족 조건에서 함수는 iDefault를 반환할 수 있습니다.
설명
보안 경고: 함수가 –1 또는 iDefault를 반환하는 경우 위험한 작업을 수행하지 마세요. 메시지 상자를 표시하려고 할 때 오류가 발생하면 SHMessageBoxCheck 는 –1 또는 경우에 따라 iDefault를 반환합니다. 이러한 오류는 메모리 또는 리소스 부족으로 인해 발생할 수 있습니다. 이러한 반환 값 중 하나를 가져오는 경우 사용자에게 대화 상자가 반드시 표시되지 않았고 결과적으로 어떤 작업에도 긍정적으로 동의하지 않았다는 점에 유의해야 합니다.
"이 대화 상자를 표시하지 마세요"와 "이 대답 기억"을 혼동하지 마세요. SHMessageBoxCheck 는 "이 답변 기억" 기능을 제공하지 않습니다. 사용자가 메시지 상자를 다시 표시하지 않도록 선택하는 경우 함수는 클릭한 단추를 유지하지 않습니다. 대신 SHMessageBoxCheck 의 후속 호출은 iDefault에 지정된 값을 반환하기만 하면 됩니다. 아래 예제를 고려해 보세요.
int iResult = SHMessageBoxCheck(hwnd,
TEXT("Do you want to exit without saving?"),
TEXT("Warning"),
MB_YESNO,
IDNO,
TEXT("{d9108ba3-9a61-4398-bfbc-b02102c77e8a}");
사용자가 나중에 이 대화 상자를 표시하지 않고예 단추를 클릭하면 SHMessageBoxCheck 에서 IDYES를 반환합니다. 그러나 다음에 이 코드를 실행할 때 SHMessageBoxCheck 는 사용자가 원래 예를 선택했음에도 불구하고 IDYES를 반환하지 않습니다. 대신 iDefault에서 지정한 값이므로 IDNO를 반환합니다.
메시지 상자에 표시되는 기본 단추는 iDefault 값에 동의해야 합니다. MB_DEFBUTTON2 플래그에 대한 지원이 부족하면 MB_OK 또는 MB_OKCANCEL 플래그를 지정한 경우 iDefault 를 IDOK로 설정해야 합니다. MB_YESNO 플래그를 설정한 경우 iDefault 값을 IDYES로 설정해야 합니다.
SHMessageBoxCheck 는 사용자가 다음 레지스트리 키에서 표시하지 않기로 선택한 메시지 상자를 기록합니다.
HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Explorer LowRegistry DontShowMeThisDialogAgain
참고
shlwapi.h 헤더는 SHMessageBoxCheck를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | shlwapi.h |
DLL | Shlwapi.dll(버전 5.0 이상) |