출처 : http://blog.naver.com/intencelove?Redirect=Log&logNo=20122584833
윈도우 기반 프로그래밍에서 가장 기본적인 개념이 메시지 처리이며, 윈도우 프로그램에서는 사용자에게 엄청난 크기의 메시지 영역을 제공한다.
사용자 자신의 메시지
#define _MESSAGE1 (WM_USER+1)
WM_MESSAGE를 자주 사용하는 경우 UserMessage.h를 만들어 사용한다.
메시지 보내기
윈도우 기반 프로그래밍에서 가장 기본적인 개념이 메시지 처리이며, 윈도우 프로그램에서는 사용자에게 엄청난 크기의 메시지 영역을 제공한다.
사용자 자신의 메시지
#define _MESSAGE1 (WM_USER+1)
WM_MESSAGE를 자주 사용하는 경우 UserMessage.h를 만들어 사용한다.
메시지 보내기
PostMessage(_MESSAGE); //메시지 큐에 넣기
SendMessage(_MESSAGE); //ㅐㄴ들러(함수)를 마칠때까지 기다림
SendMessage(_MESSAGE); //ㅐㄴ들러(함수)를 마칠때까지 기다림
위 함수는 CWnd 클래스의 멤버함수이며, 위 함수는 자신의 윈도우에서만 처리가 된다.
브로드 캐스팅을 하는 방법은 WinAPI를 이용하여 처리하며
::PostMessage(HWND _BROADCAST, _MESSAGE, Parameter1, Parameter2);
::SendMessage(HWND _BROADCAST, _MESSAGE, Parameter1, Parameter2);
자신의 윈도우 뿐 아니라 다른 모든 윈도우에 메시지가 전달된다.
메시지 맵핑
BEGIN_MESSAGE_MAP(CM?ywindowClass, CMyParentWindowClass)
//{{AFX_MSG_MAP(CMyWindowClass)
On_MESSAGE(_MESSAGE,OnMyMessageHandler)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
OnMyMessageHnadler는 사용자 정의 메시지가 도착 할때 수행되는 함수의 이름이다.
함수 정의
LRESULT CMyWindowClass::OnMyMessageHandler(WPARAM wParam,LPARAM lParam){}
함수 선언
afx_msg LRESULT OnMyMessageHandler(WPARAM wParam, LPARAM lParam);
afx_msg(Message Handler Function) : 윈도우로부터 어플리케이션에 메시지가 저달될 때 해당 메시지를 처리하는 멤버 함수, 함수이름엔 WM_대신 On, 함수 선언시 afx_msg를 붙인다.
브로드 캐스팅을 하는 방법은 WinAPI를 이용하여 처리하며
::PostMessage(HWND _BROADCAST, _MESSAGE, Parameter1, Parameter2);
::SendMessage(HWND _BROADCAST, _MESSAGE, Parameter1, Parameter2);
자신의 윈도우 뿐 아니라 다른 모든 윈도우에 메시지가 전달된다.
메시지 맵핑
BEGIN_MESSAGE_MAP(CM?ywindowClass, CMyParentWindowClass)
//{{AFX_MSG_MAP(CMyWindowClass)
On_MESSAGE(_MESSAGE,OnMyMessageHandler)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
OnMyMessageHnadler는 사용자 정의 메시지가 도착 할때 수행되는 함수의 이름이다.
함수 정의
LRESULT CMyWindowClass::OnMyMessageHandler(WPARAM wParam,LPARAM lParam){}
함수 선언
afx_msg LRESULT OnMyMessageHandler(WPARAM wParam, LPARAM lParam);
afx_msg(Message Handler Function) : 윈도우로부터 어플리케이션에 메시지가 저달될 때 해당 메시지를 처리하는 멤버 함수, 함수이름엔 WM_대신 On, 함수 선언시 afx_msg를 붙인다.