안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

2015년 3월 19일 목요일

[MFC] MessageBox

Message Box 공부에 Vㅔ리 굳한 사이트 소개

nt MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
- 조그만 별도의 윈도우를 열어서 사용자에게 정보를 전달하거나 질문을 하는 장치
- 인수설명
hWnd : 부모 윈도우의 핸들을 입력한다. 부모가 없을 경우 NULL로 입력
lpText : 출력할 메시지의 내용을 입력한다. 모든 포맷의 문자열을 입력할 수 있다.
lpCaption : 메세지박스의 타이틀에 나타날 문자열을 입력한다. 기본값은 Error 이다.
uType : 메시지박스의 버튼,아이콘,동작방식을 결정한다. 여러 플래그를 | 로 조합사용한다.

인수 : uType (버튼의 종류 선택)
플래그
설 명
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 세 개의 버튼 표시



인수 : uType (버튼의 아이콘 선택)
플래그
설 명
MB_ICONEXCLAMATION, MB_ICONWARNING
MB_ICONINFORMATION, MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND



인수 : uType (디폴트 버튼 지정)
플래그
설 명
MB_DEFBUTTON1
첫번째 버튼이 디폴트 버튼이 된다. (기본값)
MB_DEFBUTTON2
두번째 버튼이 디폴트 버튼이 된다.
MB_DEFBUTTON3
세두번째 버튼이 디폴트 버튼이 된다.
MB_DEFBUTTON4
네번째 버튼이 디폴트 버튼이 된다.



인수 : uType (모달 여부 선택)
플래그
설 명
MB_APPMODAL
hWnd 윈도우의 모달 대화상자로 열리므로 메시지 박스를 닫기 전에는 같은 스레드에 속한 다른 윈도우로 전환할 수 없다. 그러나 다른 스레드의 윈도우로 전환할 수는 있으며 팝업 윈도우로도 전환할 수 있다. 아무 플래그도 지정되지 않으면 이 모드가 디폴트로 적용됨.
MB_SYSTEMMODAL
MB_APPMODAL과 동일하되 항상 위 스타일을 가져 모든 윈도우보다 위에 배치된다. 메모리 부족 등의 긴급한 상황을 알리고자 할 때 이 플래그를 사용.
MB_TASKMODAL
MS_APPMODAL과 동일하되 hWnd가 NULL일 경우 현재 스레드에 속한 모든 최상위 윈도우가 사용 금지된다는 점이 다르다. DLL이나 라이브러리에서 부모 윈도우로 지정할만한 윈도우가 없을 때 이 플래그를 사용한다.



인수 : uType (기타 옵션 선택)
플래그
설 명
MB_DEFAULT_DESKTOP_ONLY
사용자가 로그온안 후 응용 프로그램이 실행되고 있는 디폴트 데스크 탑인 경우만 메시지 박스가 나타나도록 한다.
MB_HELP
도움말 버튼을 보여준다. 이 버튼을 누르거나 F1키를 누르면 Help 이벤트가 발생한다.
MB_RIGHT
메시지를 오른쪽으로 정렬한다.
MB_RTLREADING
아랍이나 헤브루 윈도우즈에서 오른쪽에서 왼쪽 읽기로 출력한다. 한글 윈도우즈에서는 의미가 없다.
MB_SETFOREGROUND
메시지 박스를 포그라운드 윈도우로 만든다. 시스템은 내부적으로 SetForegroundWindow 함수를 호출한다.
MB_TOPMOST
항상 위 옵션으로 메시지 박스를 생성한다.
MB_SERVICE_NOTIFICATION
NT의 서비스 프로그램만 사용할 수 있는 플래그이다. 현재 로긴한 사용자가 없더라도 액티브되어 있는 데스크 탑에 메시지 박스를 출력한다. 이 경우 hWnd는 반드시 NULL이어야 한다.
MB_SERVICE_NOTIFICATION_NT3X
MB_SERVICE_NOTIFICATION와 동일하되 NT 3.51버전에서 사용한다.


- 리턴값 : 메시지 박스를 생성할 메모리가 부족할 경우 0을 리턴한다. 그 외의 경우 사용자가
누른 버튼의 ID를 리턴한다.

버  튼
IDABORT
Abort 버튼을 누를 경우
IDCANCEL
Cancel 버튼을 누를 경우 Esc키를 눌러 대화상자를 닫을 때도 이 값이 리턴된다.
IDIGNORE
Ignore 버튼을 누를 경우
IDNO
No 버튼을 누를 경우
IDOK
Ok 버튼을 누를 경우
IDRETRY
Retry 버튼을 누를 경우
IDYES
Yes 버튼을 누를 경우
 


출처: http://devlog.cafe24.com/xe/index.php?mid=board_oHhP60&search_target=tag&search_keyword=MessageBox&document_srl=288