메시지 : 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값

윈도우 프로그래밍에서 가장 중요한 것은 메시지를 처리하는 것

 

  • 윈도우 메시지
    • WM_로 시작하는 메시지
    • 매개 변수가 있어 메시지를 어떻게 처리할 것인지를 결정
    • 윈도우 관리 메시지 : 윈도우의 상태가 바뀔 때 발생
    • 초기화 메시지 : 응용 프로그램이 메뉴나 대화상자를 구성할 때 발생
    • 입력 메시지 : 마우스, 키보드로 입력할 때 발생
  • 컨트롤 통지 메시지
    • Button, Combo Box와 같은 제어 객체나 자식 윈도우에서 부모 윈도우로 보내는 메시지
  • 명령 메시지
    • 메뉴, 툴바, 엑셀레이터 키와 같은 사용자 인터페이스 객체로부터 발생되는 WM_COMMAND 메시지
    • 명령메시지는 윈도우뿐만 아니라 도큐먼트, 도큐먼트 템플릿, 뷰, 다른 애플리케이션 객체에 의해서도 발생될 수 있음

 

 


Win32 SDK 프로그램 : 들어온 메시지를 switch문을 사용하여 처리

MFC : 메시지 처리를 위해 메시지 맵을 사용

메시지 맵(Message Map)

 

  • 메시지 번호와 메시지가 발생하였을 때 호출되는 함수의 포인터 등의 정보를 갖고 있는 테이블
  • 프로그램에 전달된 메시지와 메시지 핸들러 함수를 연결하는데 사용
  • 파생 클래스의 메시지 핸들러 함수가 우선

메시지 처리 단계 - 클래스 마법사가 2번까지 자동으로 코딩해줌

 

  1. 선언 - 윈도우 클래스의 멤버함수로 메시지 핸들러 함수를 선언
  2. 묶기 - 메시지 맵에 메시지와 메시지 핸들러 함수를 묶는 메시지의 매크로를 추가
  3. 구현 - 메시지 핸들러 함수의 기능 구현

메시지 핸들러 함수

 

  • 윈도우로부터 애플리케이션에 메시지가 전달될 때 해당 메시지를 처리하는 멤버 함수
  • 함수 이름
    • 윈도우 메시지의 WM_을 떼고 대신 On을 붙여 시작
    • 함수 선언시 afx_msg는 메시지 핸들러 함수를 나타내는 말

 

 

 

 

메시지 유형

발생 상황

메시지 핸들러 함수

WM_CREATE

윈도우가 생성될 때

OnCreate()

WM_ACTIVE

윈도우가 활성화 될 때

OnActive()

WM_PAINT

윈도우가 다시 그려질 때

OnPaint()

WM_SIZE

윈도우 크기가 변경될 때

OnSize()

WM_MOVE

윈도우가 움직일 때

OnMove()

WM_TIMER

설정된 타이머 시간이 됐을 때

OnTimer()

WM_DESTROY

윈도우가 종료될 때

OnDestroy()

 

       ▲윈도우 관리 메시지와 메시지 핸들러 함수


'프로그래밍 > C++' 카테고리의 다른 글

(MFC) 그래픽 객체의 사용  (0) 2016.07.09
(MFC) 대화상자  (0) 2016.07.09
(C++) 클래스와 객체  (0) 2016.07.09
(C++) Simple 한/영사전 예제  (0) 2016.07.09
(C++) 상속을 이용한 간단한 계산 클래스 구현  (0) 2016.07.09

+ Recent posts