::public/윈도우즈 응용 프로그래밍
Timer
해맑은욱
2019. 9. 24. 20:16
;일정한 시간 간격으로 반복적인 작업을 하고 싶을 경우 사용.
*SetTimer
int g_count = 0; void CALLBACK MyTimerFunc(HWND hWnd, UINT nMsg, UINT_PTR nIDEvent, DWORD dwTime) { g_count++; HDC h_dc = GetDC(hWnd); TextOutA(h_dc, 10, 10 + g_count * 20, "Timer Test 1", 12); } // 사용자가 메시지를 처리하는 함수. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC h_screen_dc = ::GetDC(NULL); // 모니터 전체 화면용 DC HDC h_dc = ::GetDC(hWnd); // 현재 윈도우용 DC switch (message) { case WM_CREATE: SetTimer(hWnd, 1, 1000, MyTimerFunc); // 생성된 함수 호출. SetTimer(hWnd, 2, 1000, NULL); // WM_TIMER 메시지 발생. break; case WM_TIMER: TextOutA(h_dc, 100, 10 + g_count * 20, "Timer Test 2", 12); break; case WM_DESTROY: KillTimer(hWnd, 1); KillTimer(hWnd, 2); // 프로그램 종료 PostQuitMessage(0); break; default: // 자신이 처리하지 않는 메시지들의 기본 작업을 대신 처리해주는 함수. return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } | cs |