잠깐 언급을 했던것 같은데. 타이머를 여러개 설치가 가능하다.고 언급을 했었다.
타이머의 ID를 각기 다르게 주면어서 생성하면 되는데 그렇다 하더라도
WM_TIMER는 하나이다.
타이머의 구분은 wParam으로 전달되는 타이머 아이디로 구분한다.
그럼 소스를 보도록 하자.
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_Inst;
LPCTSTR wndname=TEXT("GFP TWO TIMER");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_Inst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName=wndname;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(wndname,wndname,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nShowCmd);
while(GetMessage(&Message,NULL,0,0)){
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
SYSTEMTIME st;
static TCHAR sTime[128];
static RECT rt={100,100,500,120};
switch(iMessage){
case WM_DESTROY:
KillTimer(hWnd,1);
KillTimer(hWnd,2);
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,100,100,sTime,lstrlen(sTime));
EndPaint(hWnd,&ps);
return 0;
case WM_TIMER:
switch(wParam){
case 1:
GetLocalTime(&st);
wsprintf(sTime,TEXT("%d : %d : %d : %d"),st.wHour,st.wMinute,st.wSecond,st.wMilliseconds);
InvalidateRect(hWnd,&rt,true);
break;
case 2:
MessageBox(hWnd,sTime,sTime,MB_OK);
break;
}
return 0;
case WM_CREATE:
SetTimer(hWnd,1,1000,NULL);
SetTimer(hWnd,2,5000,NULL);
SendMessage(hWnd,WM_TIMER,1,0);
return 0;
}
return (DefWindowProc(hWnd,iMessage,wParam,lParam));
}
프로그램 분석은 굳이 필요 없을듯 하다. 단순히 타이머 하나는 시간을 출력 또하나는 5초마다 메세지 박스가 나오게 하는 그런 예제이다
단순히 타이머를 여러개를 사용 할 수 있다.
는걸 보여주기 위함이다.
'Computer > Win API' 카테고리의 다른 글
WinApi 타이머 콜백함수 (0) | 2010.07.19 |
---|---|
WinApi 타이머 [백그라운드 작업] (0) | 2010.07.19 |
WinApi 타이머 확장 문제. (0) | 2010.07.18 |
WinApi 타이머2 [SendMessage] (0) | 2010.07.18 |
WinApi 타이머 (0) | 2010.07.18 |