본문 바로가기

[ C/ C++ 프로그래밍 ]/[ WinAPI ]

[Windows Api 정복 정리 ] 메시지 처리 함수 (WinProc)


ㅇ 메시지 처리 함수 (WinProc)

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

- 메시지가 발생할 때 프로그램의 반응을 처리하는 일을 한다.
- WndProc 는 윈도우 프로시저(WIndow Procedure)라는 뜻
- WinMain내의 메시지 루프는 메시지를 메시지 처리함수로 보내주기만 할뿐 , WinMain에 의해 호출되는 것이 아니라 윈도우즈에 의해 호출됨
- 운영체제에 의해 호출되는 응용 프로그램 내의 함수를 콜백(CallBack) 함수라고 함
- 인수 4개는 MSG 구조체의 멤버 4개와 동일
- HWND: 메시지를 받는 핸들
- UINT : 메시지의 종류
- WPARAM,LPARAM : 메시지에 따라 부가적인 정보
- WndProc의 구조
switch(iMessage)
{
 case Msg1:
  처리1;
  return 0;
 case Msg2:
  처리2;
  return 0;
 case Msg3:
  처리3;
  return 0;
 default:
  return DefWindowProc(...);
}

 - DefWindowProc 함수는 WndProc에 처리하지 않은 나머지 메시지에 관한 처리
   ex) 윈도우 크기 변경, 시스템 메뉴 더블클릭(프로그램 종료)

 - 사용예)

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
 switch(iMessage) {
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

- WndProc 메시지를 처리 했을 경우 반드시 0을 리턴해주어야 한다.
 - DefWindowProc 함수가 메시지를 처리 했을 경우 이 함수가 리턴한 값을 WndProc함수가 다시 리턴해주어야 한다.

 




 ps : 자세한 내용은  www.WinAPI.co.kr 참고