GetCurrentMessage() - 메시지 핸들러에서 메시지 정보 가져오기
이 함수에 대해서, MSDN에 아래와 같이 나와 있다.
Returns a pointer to the message this window is currently processing. Should only be called when in an OnMessage message-handler member function.
MFC 에서 OnMessage 핸들러내에서 GetCurrentMessaeg() 를 호출하면 MSG 타입의 구조체를 얻을 수 있어 현재 처리중인 명령의 WPARAM과 LPARAM을 알 수 있다.
아래는 이 함수를 사용한 MSDN 예제 중의 일부이다.
#define IDM_BLACK 20 #define IDM_RED 21 #define IDM_GREEN 22 #define IDM_BLUE 23 #define IDM_WHITE 24 … BEGIN_MESSAGE_MAP(CHelloWnd, CMDIChildWnd) //{{AFX_MSG_MAP(CHelloWnd) ON_COMMAND(IDM_BLACK, OnColor) ON_COMMAND(IDM_RED, OnColor) ON_COMMAND(IDM_GREEN, OnColor) ON_COMMAND(IDM_BLUE, OnColor) ON_COMMAND(IDM_WHITE, OnColor) //}}AFX_MSG_MAP END_MESSAGE_MAP() … void CHelloWnd::OnColor() { m_nIDColor = LOWORD(GetCurrentMessage()->wParam); m_clrText = colorArray[m_nIDColor - IDM_BLACK]; // Force the client area text to be repainted in the new color Invalidate(); } |
여기서 한가지 더, 같은 핸들러를 이용하여 같은 종류의 명령어를 처리하는 방법을 눈여겨 보자.