-
Win32 API 6강. (3) 타이머Win32 API with 나우캠퍼스 2022. 8. 16. 16:45
1. 타이머
▩ 역할
일정한 시간 간격으로 함수 호출 또는 WM_TIMER 메시지 발생
▩ 사용 용도
일정한 시간 간격으로 코드 실행
▩ 생성
UINT_PTR SetTimer( [in, optional] HWND hWnd, [in] UINT_PTR nIDEvent, [in] UINT uElapse, [in, optional] TIMERPROC lpTimerFunc );
hWnd : 윈도우 핸들
nIDEvent : 타이머의 아이디(양의 정수값)
uELAPSE : 일정시간 간격(단위는 ms)
lpTimerFunc : 함수 전달.(함수포인터임), WM_TIMER를 사용하기 위해선 NULL을 입력
▩ 해제
BOOL KillTimer( [in, optional] HWND hWnd, [in] UINT_PTR uIDEvent );
▩ UINT_PTR
unsigned int, unsigned _int64
타이머 이벤트 처리
▩ 메시지 처리
WM_TIMER + wParam(아이디)
사용예시.
static char string[100]; static int timer1 = 0, timer2 = 0; switch (message) { case WM_CREATE: SetTimer(hWnd, 1, 1000, NULL); // 타이머1 생성 SetTimer(hWnd, 2, 5000, NULL); // 타이머2 생성 break; case WM_TIMER: switch (wParam) { case 1: timer1++; InvalidateRect(hWnd, NULL, TRUE); break; case 2: timer2 += 5; InvalidateRect(hWnd, NULL, TRUE); break; } break; case WM_PAINT: { hdc = BeginPaint(hWnd, &ps); sprintf_s(string, "타이머1 : %d, 타이머2 : %d", timer1, timer2); TextOut(hdc, 0, 0, string, strlen(string)); EndPaint(hWnd, &ps); } break; case WM_DESTROY: KillTimer(hWnd, 1); // 타이머1 해제 KillTimer(hWnd, 2); // 타이머2 해제 PostQuitMessage(0); break; }
▩ 콜백 함수 처리
void CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime );
hwnd : 윈도우 핸들
uMsg : 타이머 메시지
idEvent : 타이머 아이디
dwTime : 일정시간 간격(단위는 ms)
'Win32 API with 나우캠퍼스' 카테고리의 다른 글
Win32 API 7강. 다이얼로그(2) 모델리스형 다이얼로그 (0) 2022.08.17 Win32 API 7강. 다이얼로그(1) 모달형 다이얼로그 (0) 2022.08.17 Win32 API 6강. (2) 마우스 (0) 2022.08.16 Win32 API 6강. (1) 키보드 (0) 2022.08.16 Win32 API 5강. 그래픽 오브젝트(2) 비트맵 (0) 2022.08.15