MFC 메시지 처리의 기본 개념

메시지 처리의 기본 개념

  • 메시지
  • 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값
  • 윈도우 프로그래밍
  • 가장 중요한 것은 메시지를 처리하는 것
  • 메시지의 종류
  • 윈도우 메시지
    • WM_로 시작하는 메시지 (WM_COMMAND는 제외)
    • 매개 변수가 있어 메시지를 어떻게 처리할 것인지를 결정
    • 윈도우 관리 메시지 : 윈도우의 상태가 바뀔 때 발생
    • 초기화 메시지 : 응용 프로그램이 메뉴나 대화상자를 구성할 때 발생
    • 입력 메시지 : 마우스, 키보드로 입력할 때 발생
  • 메시지의 종류
  • 컨트롤 통지 메시지
    • Button, Combo Box와 같은 제어 객체나 자식 윈도우에서 부모 윈도우로 보내는 메시지
  • 명령 메시지
    • 메뉴, 툴바,엑셀레이터 키와 같은 사용자 인터페이스 객체로부터 발생되는 WM_COMMAND 메시지
    • 명령메시지는 윈도우뿐만 아니라 도큐먼트, 도큐먼트 템플릿, 뷰, 다른 애플리케이션 객체에 의해서도 발생될 수있다.
  • SDK 프로그램
  • 들어온 메시지를 switch문을 사용하여 처리
  • MFC 프로그램
  • 메시지 처리를 위해 메시지 맵을 사용
  • 메시지 맵
  • 메시지 번호와 메시지가 발생하였을 때 호출되는 함수의 포인터 등의 정보를 갖고 있는 테이블
  • 프로그램에 전달된 메시지와 메시지 핸들러 함수를 연결하는데 사용
  • 파생 클래스의 메시지 핸들러 함수가 우선
  • 메시지 처리 단계
  • 윈도우 클래스의 멤버 함수로 메시지 핸들러 함수를 선언한다
  •  메시지 맵에 메시지와 메시지 핸들러 함수를 묶는 메시지의 매크로를 추가한다.
  •  메시지 핸들러 함수의 기능을 구현한다.
  • 클래스 위자드
  • 위의 세 가지 단계에서 마지막 단계의 메시지 핸들러 함수의 본체만 사용자가 구현하도록 나머지는 자동으로 코딩을 해준다.
  • 메시지 핸들러 함수
  • 윈도우로부터 애플리케이션에 메시지가 전달될 때 해당 메시지를 처리하는 멤버 함수
  • 함수 이름
    • 윈도우 메시지의 WM_을 떼고 대신 On을 붙여 시작한다.
    • 함수 선언시 afx_msg는 메시지 핸들러 함수라는 것을 나타내는 말이다.
  1. //{AFX_MSG(Practice2_1View)
  2. Afx_msg void OnKeyDown();
  3. //}AFX_MSG
  • 윈도우 관리 메시지와 메시지 핸들러 함수
메시지 유형 발생 상황 메시지 핸들러 함수
WM_CREATE 윈도우가 생성될 때 OnCreate()
WM_ACTIVE 윈도우가 활성화 될 때 OnActive()
WM_PAINT 윈도우가 다시 그려질 때 OnPaint()
WM_SIZE 윈도우 크기가 변경될 때 OnSize()
WM_MOVE 윈도가 움직일 때 OnMove()
WM_TIMER 설정된 타이머 시간이 됐을 때 OnTimer()
WM_DESTROY 윈도우가 종료될 때 OnDestroy()

메시지 박스

  • AfxMessageBox() 함수
  • 사용자에게 간단한 메시지를 출력하는데 사용되는 대화상자
  • 함수 원형
    • Int AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0)
    • lpszText : 출력하고자 하는 문자열
    • nType : 대화상자에 설정되는 버튼
    • nIDHelp : 현재 상태에서 F1키를 눌러 도움말을 실행하였을 때의 도움말 ID
  • 디폴트 메시지 박스 스타일과 아이콘
    • 메시지 박스 : MB_OK
    •  아이콘 : MB_ICONEXCLAMATION
  • 메시지 박스 스타일과 반환 값
메시지 박스 스타일 사용 가능한 버튼 반환 값
MB_OK 확인 IDOK
MB_OKCANCEL 확인, 취소 IDOK,IDCANCEL
MB_YESNO 예, 아니오 IDYES,IDNO
MB_YESNOCANCEL 예, 아니오, 취소 IDYES,IDNO, IDCANCEL
MB_RETRYCANCEL 재시도, 취소 IDRETRY,IDCANCEL
MB_ABORTRETRYIGNORE 취소, 재시도, 무시 IDABORT,IDRETRY,IDIGNORE
  • 아이콘 스타일

 

 

 

 

 

 

 

 

 

 

 

 

 

클래스 위저드(ClassWizard)

  • 클래스 위저드의 기능
  • 메시지 매핑 기능
  • 클래스에 멤버를 설정
  • OLE Automation 설정
  • Active X Event 설정
  • 클래스 정보 설정

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다