메시지 : 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값
윈도우 프로그래밍에서 가장 중요한 것은 메시지를 처리하는 것
- 윈도우 메시지
- WM_로 시작하는 메시지
- 매개 변수가 있어 메시지를 어떻게 처리할 것인지를 결정
- 윈도우 관리 메시지 : 윈도우의 상태가 바뀔 때 발생
- 초기화 메시지 : 응용 프로그램이 메뉴나 대화상자를 구성할 때 발생
- 입력 메시지 : 마우스, 키보드로 입력할 때 발생
- 컨트롤 통지 메시지
- Button, Combo Box와 같은 제어 객체나 자식 윈도우에서 부모 윈도우로 보내는 메시지
- 명령 메시지
- 메뉴, 툴바, 엑셀레이터 키와 같은 사용자 인터페이스 객체로부터 발생되는 WM_COMMAND 메시지
- 명령메시지는 윈도우뿐만 아니라 도큐먼트, 도큐먼트 템플릿, 뷰, 다른 애플리케이션 객체에 의해서도 발생될 수 있음
Win32 SDK 프로그램 : 들어온 메시지를 switch문을 사용하여 처리
MFC : 메시지 처리를 위해 메시지 맵을 사용
메시지 맵(Message Map)
- 메시지 번호와 메시지가 발생하였을 때 호출되는 함수의 포인터 등의 정보를 갖고 있는 테이블
- 프로그램에 전달된 메시지와 메시지 핸들러 함수를 연결하는데 사용
- 파생 클래스의 메시지 핸들러 함수가 우선
메시지 처리 단계 - 클래스 마법사가 2번까지 자동으로 코딩해줌
- 선언 - 윈도우 클래스의 멤버함수로 메시지 핸들러 함수를 선언
- 묶기 - 메시지 맵에 메시지와 메시지 핸들러 함수를 묶는 메시지의 매크로를 추가
- 구현 - 메시지 핸들러 함수의 기능 구현
메시지 핸들러 함수
- 윈도우로부터 애플리케이션에 메시지가 전달될 때 해당 메시지를 처리하는 멤버 함수
- 함수 이름
- 윈도우 메시지의 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() |
▲윈도우 관리 메시지와 메시지 핸들러 함수
[출처] (MFC) 메시지 처리|작성자 길가다주은노트북
'프로그래밍 > 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 |