int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
hWnd 메시지 박스의 오너(Owner) 윈도우이다. 오너 윈도우란 메시지 상자를 소유한 윈도우를
말하며 메시지 박스는 오너 윈도우의 중앙에 나타나며 메시지 박스가 떠 있는 동안 오너
윈도우 는 사용할 수 없는 상태가 된다. 메시지 박스를 닫아야만 오너 윈도우를 사용할 수 있다.
lpText 메시지 박스에 출력할 문자열
lpCaption 메시지 상자의 타이틀 바에 나타날 제목 문자열
uType DWORD값 참조
값 | 설명 |
MB_ABORTRETRYIGNORE | Abort, Retry, Ignore 세 개의 버튼이 나타난다. |
MB_OK |
OK버튼 하나만 나타난다. |
MB_OKCANCEL | OK, Cancel 두 개의 버튼이 나타난다. |
MB_RETRYCANCEL | Retry, Cancel 두 개의 버튼이 나타난다. |
MB_YESNO |
Yes, No 두 개의 버튼이 나타난다. |
MB_YESNOCANCEL | Yes, No, Cancel 세 개의 버튼이 나타난다. |
버튼 종류 플레그와 아이콘 플레그를 OR 연산자로 연결하여 uType 인수에 지정해 준다.
값 | 아이콘 |
MB_ICONEXCLAMATION MB_ICONWARNING |
|
MB_ICONINFORMATION MB_ICONASTERISK |
|
MB_ICONQUESTION | |
MB_ICONSTOP MB_ICONERROR MB_ICONHAND |
사용법
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch(iMessage) { case WM_PAINT: hdc=BeginPaint(hWnd,&ps); MoveToEx(hdc,150,150,NULL); LineTo(hdc,180,200); Rectangle(hdc,200,100,250,180); Ellipse(hdc,200,200,250,280); EndPaint(hWnd,&ps); return 0; case WM_LBUTTONDOWN: MessageBox(hWnd, "왼쪽 버튼을 눌렀습니다","메시지 박스",MB_OK); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }
MessageBox 함수는 리턴값으로 사용자가 누른 버튼값을 돌려준다.
값 | 설명 |
IDABORT | Abort버튼을 눌렀다. |
IDCANCEL | Cancel 버튼을 눌렀다. |
IDIGNORE | Ignore 버튼을 눌렀다. |
IDNO | No버튼을 눌렀다. |
IDOK | OK 버튼을 눌렀다. |
IDRETRY | Retry 버튼을 눌렀다. |
IDYES | Yes 버튼을 눌렀다. |
만약 사용자에게 게임을 계속할 것인가를 묻고 싶다면 다음과 같이 코드를 작성하면 된다.
if (MessageBox(hWnd, "게임을 계속 하겠습니까","질문",MB_YESNO)==IDYES)
{ // 게임 계속 처리 } else
{ // 게임 중지 }