;메시지가 발생할 때 프로그램의 반응을 처리하는 일을 함.
운영체제에 의해 호출됨. 콜백(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 |
무효화로 지워졌던 영역에 대한 정보를 전달, 다시 그리기. |
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 |