컴퓨터 공부/Win32 API 프로그래밍

[4월 29일 2교시] 입력2 + 리소스1

려리군 2009. 4. 29. 15:03

타이머

일정 시간 간격으로 연속적으로 발생하는 메세지(주기적 갱신)

WM_TIMER보다 콜백함수가 더 정확한 시간에 호출됨.

 - wParam : 타이머의 ID

 - lParam : 콜백 함수가 있을 경우 콜백 함수의 번지


HANDLE SetTimer(HWND, UINT_PTR, UINT, TIMERPROC);

일정 시간 간격으로 발생하는 타이머 생성.

HWND(1): 윈도우 핸들

UINT_PTR(2) : 타이머 ID

UINT(3) : 1/1000초 단위의 시간값. (밀리초)

TIMERPROC(4) : 콜백함수(타이머 프로시저) 포인터


리턴

성공 + HWND가 NULL : 새로운 타이머를 확인할 수 있는 정수값(핸들). 이 값을 KillTimer 파라미터로 전달해야 함.

성공 + HWND가 NOT NULL : 0이 아닌 정수값(핸들). nIDEvent(3번째 인수) 값을 KillTimer 파라미터로 전달해야 함.

실패 : 0


BOOL KillTimer(HWND hWnd, UINT_PTR uIDEvent);

특정 타이머를 파괴.

HWND(1) : 윈도우 핸들

UINT_PTR : 파괴할 타이머 ID

리턴 : 성공시 0이 아닌 정수값. 실패시 0


작업영역(Client Area)

BOOL GetClientRect(HWND hWnd, LPRECT lpRECT);

작업영역의 좌표(크기)를 얻는다.

HWND(1) : 윈도우 핸들

LPRECT(2) : RECT구조체의 포인터. 이 곳에 작업영역 좌표가 저장됨.

리턴 : 성공시 0이 아닌 정수값. 실패시 0


WM_SIZE

윈도우의 크기가 변하는 것을 마쳤을 때 발생(변하는 중일 때는 WM_SIZING)

 - wParam : 메세지 발생 이유 플래스

설명
SIZE_MAXHIDE다른 윈도우가 최대화될 때 모든 팝업 윈도우에게 전달된다.
SIZE_MAXIMIZED윈도우가 최대화되었다.
SIZE_MAXSHOW최대화되어 있던 윈도우가 복구될 때 모든 팝업 윈도우에게 전달된다.
SIZE_MINIMIZED윈도우가 최소화되었다.
SIZE_RESTORED윈도우의 크기가 변경되었다. 마우스로 경계선을 드래그하거나 시스템 메뉴의 크기 조정 항목으로 윈도우의 크기를 직접 변경할 때이다.

출처 : http://www.winapi.co.kr/reference/Message/WM_SIZE.htm


 - LOWORD(lParam) : 변경된 후 윈도우 폭

 - HIWORD(lParam) : 변경된 후 윈도우 높이


WM_MOVE

윈도우의 위치가 변경되자 마자 발생(위치 변경 중일 때는 WM_MOVING)

 - LOWORD(lParam) : 새 x좌표

 - HIWORD(lParam) : 새 y좌표


리소스

WM_COMMAND

메뉴항목 선택, Accelerator, 버튼, 에디트 박스 등의 컨트롤이 부모 윈도우로 통지메세지 보낼 때도 발생.

 - LOWORD(wParam) : 메뉴, Accellerator, 컨트롤 등의 ID

 - HIWORD(wParam) : 컨트롤이 보내는 통지 메세지, 메뉴는 0, Accelerator는 1

 - lParam : 컨트롤의 윈도우 핸들


※ 메뉴추가 시 윈도우 클래스에 다음과 같이 입력

WndClass. lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);