티스토리 뷰

Development/Windows

[MFC] MESSAGE MAP

jhbaek 2010. 12. 14. 14:20

MFC에서는 메세지와 함수를 연결시켜주는 메세지맵이라고 있다.

BEGIN_MESSAGE_MAP(자기클래스, 부모클래스)
 ...
 ...
END_MESSAGE_MAP()

으로 된다.
들어가는건 이것 저것 많다.

ON_NOTIFY
ex) ON_NOTIFY(NM_RCLICK, IDC_DB_TREE, OnNMRclickDbTree)

ON_MESSAGE
ex) ON_MESSAGE(WM_USER_COMMAND_COPY, OnUserMapCopy)

ON_COMMAND
ex) ON_COMMAND(ID_OK,OnOK)

등등...
그 외에 일정 범위 안에 있는 메세지를 처리하는 RANGE용도 메세지맵도 있는데 얘네들은 펑션들이 UINT nID를 인자로 가져야 한다.

ON_COMMAND_RANGE
ex) ON_COMMAND_RANGE(ida, idz, OnFunc) : ida부터 idz까지 사이의 모든 커맨드들의 메세지를 OnFunc에서 받음

이 외에도
ON_UPDATE_COMMAND_UI_RANGE
ON_CONTROL_RANGE
같은 녀석들도 있다.

예를 들면
메세지맵에 이렇게 써주고
ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON_A, IDC_BUTTON_Z, OnButtonClicked)

함수는 이렇게 사용한다.
void CMainFrame::OnButton(UINT nID)
{
switch (nID)
{
case IDC_BUTTON_A:
:
break;
case IDC_BUTTON_B:
:
break;
case IDC_BUTTON_C:
:
break;
case IDC_BUTTONZ:
:
break;
}
}




회사 기존 프로그램에 버그가 있길래 뭐가 문제인가 하고 봤더니
RANGE로 설정한 메세지맵인데 범위가 다른 메세지까지 포함하도록 돼있었다..
따라서 Resource.h에 메세지 추가할땐 아무 생각 없이 제일 뒤에 추가하지 말 것-.-;;
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함