본문 바로가기

Programming/WinAPI

WndProc 메시지 처리 함수란

ㅁ WndProc 메시지 처리 함수란

 메시지가 발생할 때 프로그램의 반응을 처리하는 일을 하며
WinMain 함수와는 별도로 WndProc이라는 이름으로 존재한다.

 윈도우 프로시저(Window Procedure)라는 뜻이지만 통상 읽을 때는 "윈드프록"이라고 읽는다. WndProc은 WinMain에서 호출하는 것이 아니라 윈도우즈에 의해 호출된다.

WinMain내의 메시지 루프는 메시지를 메시지 처리 함수로 보내주기만 할 뿐이며 WndProc은 메시지가 입력되면 윈도우즈에 의해 호출되어 메시지를 처리한다. 이렇게 운영체제에 의해 호출되는 응용 프로그램내의 함수를 콜백(CallBack) 함수라고 한다.

 WndProc의 인수는 모두 4개이며 MSG 구조체의 멤버 4개와 동일하다. hWnd는 메시지를 받을 윈도우의 핸들이며 iMessage는 어떤 종류의 메시지인가, 즉 어떤 변화가 발생했는가에 관한 정보를 가진다.

iMessage가 WM_MOVE이면 윈도우의 위치가 변경되었음을 알리고 WM_DESTROY이면 윈도우가 파괴되었음을 알리는 것이다.

 wParam, lParam은 iMessage의 메시지에 따른 부가적인 정보를 가진다. 예를 들어 마우스 버튼이 눌러졌다는 WM_LBUTTONDOWN 메시지가 입력되었다면 화면의 어디쯤에서 마우스 버튼이 눌러졌는가, 그때의 키보드 상황(Shift, Ctrl, Alt)은 어떠한가에 관한 정보가 추가로 필요하며 WM_CHAR 메시지, 즉 키보드로부터 키가 입력되었다는 메시지가 입력되었다면 어떤 키가 입력되었는가에 관한 추가적인 정보가 필요하다.
 
이런 추가 정보들이 wParam, lParam으로 전달된다. wParam, lParam에 실제로 어떤 값을 전달되는지는 메시지별로 다르다.
 


-출처 : www.winapi.co.rk
반응형