다음을 통해 공유


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 이상)