http://hatti.tistory.com/entry/MFC-SendMessage
http://xtelite.blogspot.kr/2007/04/mfc_5020.html
http://mauver.kr/wp/archives/360
Dialog간의 통신이나 이벤트 발생시에 많이 사용하게 되는 사용자 정의 메세지 사용법.
1. 메세지를 정의한다.
- 헤더파일에 다음과 같은 형식으로 정의
#define WM_TEST_MESSAGE WM_USER+10;
2. 메세지를 통해서 호출할 함수의 원형선언 및 구현.
- 메세지를 받는 쪽 Dialog의 헤더에 함수원형을 선언한다.
헤더파일의 아래쪽 // Generated message map functions이라고 주석처리된 부분 밑에
아래와 같은 형식으로 선언
afx_msg LRESULT UserMSG(WPARAM wParam, LPARAM lParam);
- cpp파일에 함수구현.
3. MESSAGE MAP에 등록.
- cpp파일의 메세지 맵에 등록하여 정의된 메세지와 메세지를 통해 호출할 함수를 연결시켜준
다.
- cpp파일의 위쪽에 아래와 같은 형식으로 메세지 맵이 있고, 프로젝트 생성시에 자동으로 등
록된 여러가지 메세지들이 있을 것이다. BEGIN_MESSAGE_MAP과 END_MESSAGE_MAP
의 사이에 ON_MESSAGE를 이용하여 아래와 같이 등록
BEGIN_MESSAGE_MAP("메세지를 받는 쪽 Dialog의 클래스명", CDialog)
//{{AFX_MSG_MAP("메세지를 받는 쪽 Dialog의 클래스명")
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_DESTROY()
ON_MESSAGE(WM_TEST_MESSAGE, UserMSG)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
4. 사용자 정의 메세지 사용.
- SendMessage 또는 PostMessage함수를 이용하여 사용.
- 파라미터로 넘길 데이터가 있으면 wParam 또는 lParam을 이용.
'[배움] > Visual Studio' 카테고리의 다른 글
SetWindowPos (0) | 2016.03.10 |
---|---|
문자열 관련 함수들 (0) | 2016.03.07 |
[MFC/API] 관련 참고 사이트 (0) | 2016.02.25 |
MFC 클래스뷰에 클래스가 안보일때 (0) | 2016.02.25 |
External library의 Directory 추가 방법 (0) | 2016.02.25 |