다음을 통해 공유


MessageBoxA 함수(winuser.h)

시스템 아이콘, 단추 집합 및 상태 또는 오류 정보와 같은 간단한 애플리케이션 관련 메시지가 포함된 모달 대화 상자를 표시합니다. 메시지 상자는 사용자가 클릭한 단추를 나타내는 정수 값을 반환합니다.

구문

int MessageBoxA(
  [in, optional] HWND   hWnd,
  [in, optional] LPCSTR lpText,
  [in, optional] LPCSTR lpCaption,
  [in]           UINT   uType
);

매개 변수

[in, optional] hWnd

형식: HWND

만들 메시지 상자의 소유자 창에 대한 핸들입니다. 이 매개 변수가 NULL이면 메시지 상자에 소유자 창이 없습니다.

[in, optional] lpText

형식: LPCTSTR

표시할 메시지입니다. 문자열이 둘 이상의 줄로 구성된 경우 각 줄 사이에 캐리지 리턴 및/또는 줄 바꿈 문자를 사용하여 줄을 구분할 수 있습니다.

[in, optional] lpCaption

형식: LPCTSTR

대화 상자 제목입니다. 이 매개 변수가 NULL이면 기본 제목은 Error입니다.

[in] uType

형식: UINT

대화 상자의 내용 및 동작입니다. 이 매개 변수는 다음 플래그 그룹의 플래그 조합일 수 있습니다.

메시지 상자에 표시되는 단추를 나타내려면 다음 값 중 하나를 지정합니다.

의미
MB_ABORTRETRYIGNORE
0x00000002L
메시지 상자에는 중단, 다시 시도 및 무시의 세 가지 푸시 단추가 포함되어 있습니다.
MB_CANCELTRYCONTINUE
0x00000006L
메시지 상자에는 취소, 다시 시도, 계속이라는 세 개의 푸시 단추가 포함되어 있습니다. MB_ABORTRETRYIGNORE 대신 이 메시지 상자 유형을 사용합니다.
MB_HELP
0x00004000L
메시지 상자에 도움말 단추를 추가합니다. 사용자가 도움말 단추를 클릭하거나 F1 키를 누르면 시스템에서 소유자에게 WM_HELP 메시지를 보냅니다.
MB_OK
0x00000000L
메시지 상자에는 확인이라는 하나의 푸시 단추가 포함되어 있습니다. 이것이 기본값입니다.
MB_OKCANCEL
0x00000001L
메시지 상자에는 확인취소라는 두 개의 푸시 단추가 있습니다.
MB_RETRYCANCEL
0x00000005L
메시지 상자에는 두 개의 푸시 단추인 다시 시도취소가 포함되어 있습니다.
MB_YESNO
0x00000004L
메시지 상자에는 아니요라는 두 개의 푸시 단추가 있습니다.
MB_YESNOCANCEL
0x00000003L
메시지 상자에는 , 아니요취소라는 세 개의 푸시 단추가 포함되어 있습니다.
 

메시지 상자에 아이콘을 표시하려면 다음 값 중 하나를 지정합니다.

의미
MB_ICONEXCLAMATION
0x00000030L
메시지 상자에 느낌표 아이콘이 나타납니다.
MB_ICONWARNING
0x00000030L
메시지 상자에 느낌표 아이콘이 나타납니다.
MB_ICONINFORMATION
0x00000040L
원 안에 있는 소문자 i 로 구성된 아이콘이 메시지 상자에 나타납니다.
MB_ICONASTERISK
0x00000040L
원 안에 있는 소문자 i 로 구성된 아이콘이 메시지 상자에 나타납니다.
MB_ICONQUESTION
0x00000020L
메시지 상자에 물음표 아이콘이 나타납니다. 물음표 메시지 아이콘은 특정 유형의 메시지를 명확하게 나타내지 않고 메시지의 구문이 모든 메시지 유형에 적용될 수 있으므로 더 이상 권장되지 않습니다. 또한 사용자는 메시지 기호 물음표와 도움말 정보를 혼동할 수 있습니다. 따라서 메시지 상자에 이 물음표 메시지 기호를 사용하지 마세요. 시스템에서는 이전 버전과의 호환성을 위해서만 이 기호를 포함하도록 계속 지원합니다.
MB_ICONSTOP
0x00000010L
메시지 상자에 중지 기호 아이콘이 나타납니다.
MB_ICONERROR
0x00000010L
메시지 상자에 중지 기호 아이콘이 나타납니다.
MB_ICONHAND
0x00000010L
메시지 상자에 중지 기호 아이콘이 나타납니다.
 

기본 단추를 나타내려면 다음 값 중 하나를 지정합니다.

의미
MB_DEFBUTTON1
0x00000000L
첫 번째 단추가 기본 단추입니다.

MB_DEFBUTTON2, MB_DEFBUTTON3 또는 MB_DEFBUTTON4 지정하지 않는 MB_DEFBUTTON1 기본값입니다.

MB_DEFBUTTON2
0x00000100L
두 번째 단추가 기본 단추입니다.
MB_DEFBUTTON3
0x00000200L
세 번째 단추가 기본 단추입니다.
MB_DEFBUTTON4
0x00000300L
네 번째 단추가 기본 단추입니다.
 

대화 상자의 형식을 나타내려면 다음 값 중 하나를 지정합니다.

의미
MB_APPLMODAL
0x00000000L
사용자는 hWnd 매개 변수로 식별된 창에서 작업을 계속하기 전에 메시지 상자에 응답해야 합니다. 그러나 사용자는 다른 스레드의 창으로 이동하여 해당 창에서 작업할 수 있습니다.

애플리케이션의 창 계층 구조에 따라 사용자는 스레드 내의 다른 창으로 이동할 수 있습니다. 메시지 상자의 부모의 모든 자식 창은 자동으로 비활성화되지만 팝업 창은 비활성화되지 않습니다.

MB_SYSTEMMODAL 또는 MB_TASKMODAL 지정되지 않은 경우 MB_APPLMODAL 기본값입니다.

MB_SYSTEMMODAL
0x00001000L
메시지 상자에 WS_EX_TOPMOST 스타일이 있다는 점을 제외하고 MB_APPLMODAL 동일합니다. 시스템 모달 메시지 상자를 사용하여 즉각적인 주의가 필요한 심각하고 잠재적으로 손상될 수 있는 오류(예: 메모리 부족)를 사용자에게 알립니다. 이 플래그는 hWnd와 연결된 창 이외의 창과 상호 작용하는 사용자의 기능에는 영향을 주지 않습니다.
MB_TASKMODAL
0x00002000L
hWnd 매개 변수가 NULL인 경우 현재 스레드에 속하는 모든 최상위 창이 비활성화된다는 점을 제외하고 MB_APPLMODAL 동일합니다. 호출하는 애플리케이션 또는 라이브러리에 사용 가능한 창 핸들이 없지만 다른 스레드를 일시 중단하지 않고 호출 스레드의 다른 창에 대한 입력을 방지해야 하는 경우 이 플래그를 사용합니다.
 

다른 옵션을 지정하려면 다음 값 중 하나 이상을 사용합니다.

의미
MB_DEFAULT_DESKTOP_ONLY
0x00020000L
대화형 창 스테이션의 데스크톱과 동일합니다. 자세한 내용은 창 스테이션을 참조하세요.

현재 입력 데스크톱이 기본 데스크톱이 아닌 경우 사용자가 기본 데스크톱으로 전환할 때까지 MessageBox 가 반환되지 않습니다.

MB_RIGHT
0x00080000L
텍스트가 오른쪽 정렬됩니다.
MB_RTLREADING
0x00100000L
히브리어 및 아랍어 시스템에서 오른쪽에서 왼쪽으로 읽기 순서를 사용하여 메시지 및 캡션 텍스트를 표시합니다.
MB_SETFOREGROUND
0x00010000L
메시지 상자가 포그라운드 창이 됩니다. 내부적으로 시스템은 메시지 상자에 대해 SetForegroundWindow 함수를 호출합니다.
MB_TOPMOST
0x00040000L
메시지 상자는 WS_EX_TOPMOST 창 스타일로 만들어집니다.
MB_SERVICE_NOTIFICATION
0x00200000L
호출자는 이벤트의 사용자에 게 알리는 서비스. 사용자가 없는 컴퓨터에 로그온 하는 경우에 현재 활성 바탕 화면에 메시지 상자를 표시 하는 함수입니다.

터미널 서비스: 호출 스레드에 가장 토큰이 있는 경우 함수는 메시지 상자를 가장 토큰에 지정된 세션으로 전달합니다.

이 플래그가 설정되면 hWnd 매개 변수는 NULL이어야 합니다. 이렇게 하면 hWnd에 해당하는 바탕 화면이 아닌 바탕 화면에 메시지 상자가 나타날 수 있습니다.

이 플래그 사용과 관련된 보안 고려 사항에 대한 자세한 내용은 Interactive Services를 참조하세요. 특히 이 플래그는 잠긴 데스크톱에서 대화형 콘텐츠를 생성할 수 있으므로 리소스 소모와 같은 매우 제한된 시나리오 집합에만 사용해야 합니다.

반환 값

형식: int

메시지 상자에 취소 단추가 있는 경우 ESC 키를 누르거나 취소 단추를 선택한 경우 함수는 IDCANCEL 값을 반환합니다. 메시지 상자에 취소 단추가 없으면 MB_OK 단추가 없는 한 ESC를 누르면 효과가 없습니다. MB_OK 단추가 표시되고 사용자가 ESC를 누르면 반환 값은 IDOK가 됩니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

함수가 성공하면 반환 값은 다음 메뉴 항목 값 중 하나입니다.

반환 코드/값 설명
IDABORT
3
중단 단추가 선택되었습니다.
IDCANCEL
2
취소 단추가 선택되었습니다.
IDCONTINUE
11
계속 단추가 선택되었습니다.
IDIGNORE
5
무시 단추가 선택되었습니다.
IDNO
7
아니요 단추가 선택되었습니다.
IDOK
1
확인 단추가 선택되었습니다.
IDRETRY
4
다시 시도 단추가 선택되었습니다.
IDTRYAGAIN
10
다시 시도 단추가 선택되었습니다.
IDYES
6
단추가 선택되었습니다.

설명

uType 매개 변수를 해당 플래그 값으로 설정하여 메시지 상자에서 다음 시스템 아이콘을 사용할 수 있습니다.

아이콘 플래그 값
MB_ICONHAND, MB_ICONSTOP 및 MB_ICONERROR 아이콘 MB_ICONHAND, MB_ICONSTOP 또는 MB_ICONERROR
MB_ICONQUESTION 아이콘 MB_ICONQUESTION
MB_ICONEXCLAMATION 및 MB_ICONWARNING 아이콘 MB_ICONEXCLAMATION 또는 MB_ICONWARNING
MB_ICONASTERISK 및 MB_ICONINFORMATION 아이콘 MB_ICONASTERISK 또는 MB_ICONINFORMATION
 

MessageBox 표시 문자열의 시작 부분에 유니코드 서식 문자 U+200F로 표시되는 두 개의 오른쪽에서 왼쪽 표시(RLM)를 추가하면 MessageBox 렌더링 엔진에서 해석되어 MessageBox의 읽기 순서가 RTL(오른쪽에서 왼쪽)으로 렌더링됩니다.

시스템 모달 메시지 상자를 사용하여 시스템이 메모리 부족임을 나타내는 경우 리소스 로드 시도가 실패할 수 있으므로 lpTextlpCaption 매개 변수가 가리키는 문자열을 리소스 파일에서 가져와서는 안 됩니다.

대화 상자가 있는 동안 메시지 상자를 만드는 경우 대화 상자에 대한 핸들을 hWnd 매개 변수로 사용합니다. hWnd 매개 변수는 대화 상자의 컨트롤과 같은 자식 창을 식별해서는 안 됩니다.

예제

다음 예제에서 애플리케이션은 오류 조건이 발생한 후 사용자에게 작업을 요청하는 메시지 상자를 표시합니다. 메시지 상자에는 오류 조건 및 resolve 방법을 설명하는 메시지가 표시됩니다. MB_CANCELTRYCONTINUE 스타일은 사용자가 진행 방법을 선택할 수 있는 세 개의 단추를 제공하도록 MessageBox에 지시합니다. MB_DEFBUTTON2 스타일은 메시지 상자의 두 번째 단추(이 경우 다시 시도 단추)에 기본 포커스를 설정합니다.

int DisplayResourceNAMessageBox()
{
    int msgboxID = MessageBox(
        NULL,
        (LPCWSTR)L"Resource not available\nDo you want to try again?",
        (LPCWSTR)L"Account Details",
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
    );

    switch (msgboxID)
    {
    case IDCANCEL:
        // TODO: add code
        break;
    case IDTRYAGAIN:
        // TODO: add code
        break;
    case IDCONTINUE:
        // TODO: add code
        break;
    }

    return msgboxID;
}

다음 이미지는 이전 코드 예제의 출력을 보여줍니다.

메시지 상자

다른 메시지 상자 예제는 메시지 상자 표시를 참조하세요.

참고

winuser.h 헤더는 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 MessageBox를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-dialogbox-l1-1-0(Windows 8에서 도입)

추가 정보

개념

대화 상자

FlashWindow

MessageBeep

MessageBoxEx

MessageBoxIndirect

기타 리소스

참조

SetForegroundWindow