[1] 어딘가 Windows Message를 사용할 Dialog 의 헤더나 View의 헤더파일을 찾는다.
그 다음 아래 형태로 사용자 메시지를 정의한다.
#define UM_MESSAGE1 (WM_USER + 1)
#define UM_MESSAGE2 (WM_USER + 2)
... |
[2] 그 다음은 위에서 찾은 헤더파일에 DECLARE_MESSAGE_MAP() 을 찾는다.
2번줄 3번줄 형태의 함수를 선언한다.
//{{AFX_MSG(CWinDisplay)
afx_msg LRESULT OnUserMessage1(UINT wParam, LONG lParam);
afx_msg LRESULT OnUserMessage2(UINT wParam, LONG lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
|
찾았다면 5번줄과 6번줄 처럼 메시지를 [1] [2]에서 선언한 메시지와 함수를 연결시켜 준다.
반전된 곳의 ClassName은 알아서 고치자.
BEGIN_MESSAGE_MAP(CNetDebugMonitor4Dlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(UM_MESSAGE1, &ClassName::OnUserMessage1)
ON_MESSAGE(UM_MESSAGE2, &ClassName::OnUserMessage2) |
[4] 다음으로 선언한 함수를 구현한다.
wParam: 주로 값을 넘긴다.
lParam: 값 뿐만 아니라 포인터로 사용한다.
[5] 호출할 때는 위의 코드를 넣은 (ClassName-Instance)->SendMessage(UM_MESSAGE1, 0, 0); 이런식으로 호출한다.