본문 바로가기
::public/윈도우즈 응용 프로그래밍

WinProc(윈드 프록)

by 해맑은욱 2019. 9. 23.

;메시지가 발생할 때 프로그램의 반응을 처리하는 일을 함.

 운영체제에 의해 호출됨. 콜백(Call Back) 함수.

// 사용자가 메시지를 처리하는 함수.
LRESULT CALLBACK WndProc(
   HWND hWnd,        // 메시지를 받을 윈도우의 핸들 값.
  UINT message,     // 메시지의 종류. 변화가 발생한 정보를 가짐.
   WPARAM wParam,    // 부가적인 정보.
   LPARAM lParam)    // 부가적인 정보.
{
    switch (message)
    {
    case WM_DESTROY:
        // 프로그램 종료
        PostQuitMessage(0);
        break;
    default:
        // 자신이 처리하지 않는 메시지들의 기본 작업을 대신 처리해주는 함수.
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
cs

 

WM_CREATE

CreateWindow 또는 CreateWindowEx 함수를 호출하면 발생. 최초 생성시에만 전달되고 윈도우가 만들어졌지만 출력되기 전 상태임.

WM_DESTROY

윈도우 메모리에서 파괴될 때.

CREATE 에서 메모리 할당한 걸 지운다.

WM_QUIT

응용 프로그램 종료 시.

PostQuitMessage 함수 호출할 때 발생.

WM_KEYDOWN

키보드가 눌릴 때. press.

WM_CHAR

키보드가 눌린 뒤 글자인 경우 생김. 

TranslateMessage가 하는 일.

WM_KEYUP

키보드가 떼어질 때. release.

WM_LBUTTONDOWN

마우스 왼쪽 키 눌릴 때. R, M 버전이 잇음

WM_LBUTTONUP

마우스 왼쪽 키 뗄 때. R, M 버전이 있음

WM_LBUTTONDBLCLK

마우스 왼쪽 키 더블클릭. R, M 버전이 있음

CS_DBLCLKS을 윈도우 클래스 스타일에 추가해야함

WM_MOUSEMOVE

x = LOWORD(lParam);

y = HIWORD(lParam);

InvalidateRect(hWnd, NULL, TRUE);

이렇게 마우스 좌표 연동.

WM_SETCURSOR

작업영역 안에서 마우스 이동

WM_MOUSEWHEEL

DWORD x = HIWORD(wParam);

WHEEL_DELTA 를 곱해서 쓴다.

WM_PAINT

무효화로 지워졌던 영역에 대한 정보를 전달, 다시 그리기.

https://blog.naver.com/tipsware/221119932350

WM_NCPAINT

비 작업영역 그릴 때 발생

WM_TIMER

SetTimer() 함수를 사용하여 호출.

WM_SIZE

윈도우 크기가 변경되면 처리.

wParam: SIZE_~ 값 받음.

WM_MOVE

윈도우 좌표 이동. lParam에 좌표가 있음.

xPos = (int)(short) LOWORD(lParam);

yPos = (int)(short) HIWORD(lParam);

WM_COMMAND

메뉴에서 명령 항목 선택시 처리.

HIWORD(wParam): 통지코드.

LOWORD(wParam): 컨트롤 ID, 메뉴 ID, 엑셀러레이터 ID.

lParam: 메세지를 보낸 윈도우 핸들.

WM_CONTEXTMENU

우클릭 한 창과 관련된 메시지.

가로, 세로 위치 얻기.

xPos = GET_X_LPARAM(lParam);

yPos = GET_Y_LPARAM(lParam);

WM_USER

사용자 정의 메시지. 0x0400.

+1 해서 0x8000까지 쓸 수 있음

프로그램 내부에서만 쓰도록 약속됨.

WM_APP

사용자 정의 메시지. 0x8000.

+1 해서 0xC000 까지 쓸 수 있음.

프로그램 간의 통신을 위하도록 약속됨.

'::public > 윈도우즈 응용 프로그래밍' 카테고리의 다른 글

MessageBox  (0) 2019.09.24
Bitmap 복사  (0) 2019.09.24
윈도우 좌표 구성  (0) 2019.09.23
GDI(Graphics Device Interface)  (0) 2019.09.23
CreateBitmap / CreateCompatibleBitmap  (0) 2019.09.23