무언가 만들기 위한 지식/Win32/MFC
MFC OnTimer를 이용한 간단한 시계
신럭키
2010. 2. 20. 06:35
Dialog나 View등 하나의 Class에는 OnTimer Message를 추가할 수 있다.
(좌측 Class View에서 가능하다.)
일단 원리는 OnTimer가 주기적으로 작동하기 위해 SetTimer로 간격을 설정해준다.
그 후 OnTimer가 실행될 필요가 없을때는 KillTimer로 등록된 Timer Message를 삭제한다.
OnTimer를 작성하였으니 초기화되는 부분을 설정하여야 한다.
초기화부분은 랜덤을 위한 srand와 SetTimer를 설정한다.
즉 1초마다 갱신되며 OnTimer가 실행되게 된다.
종료시점에는 KillTimer를 통해 OnTimer가 계속 호출되지 않도록 하여야 한다. Dialog를 사용하였다면 OK나 Cancel버튼에서 KillTimer를 호출하자.
작성하면 1초마다 시간이 갱신되며 화면에 뿌려지는 모습을 볼 수 있다.
이를 응용하면 다양한 시계작성이 가능할 것이다.
(좌측 Class View에서 가능하다.)
일단 원리는 OnTimer가 주기적으로 작동하기 위해 SetTimer로 간격을 설정해준다.
그 후 OnTimer가 실행될 필요가 없을때는 KillTimer로 등록된 Timer Message를 삭제한다.
void CToday::OnTimer(UINT_PTR nIDEvent) { CTime timer; timer=CTime::GetCurrentTime(); CString strTimer; strTimer=timer.Format("%H시 %M분 %S초"); todayTime.SetWindowTextA(strTimer); //계속 실행될 OnTimer 함수. 시계는 계속 갱신시켜준다. todayTime은 Edit Control 로 된 textbox이다. //SetTimer상에서 갱신되는 Time을 지정한다. CDialog::OnTimer(nIDEvent); }
OnTimer를 작성하였으니 초기화되는 부분을 설정하여야 한다.
초기화부분은 랜덤을 위한 srand와 SetTimer를 설정한다.
BOOL CToday::OnInitDialog() { srand((unsigned int) time(0)); CDialog::OnInitDialog(); CTime timer; timer=CTime::GetCurrentTime(); CString strTimer; strTimer=timer.Format("%H시 %M분 %S초"); todayTime.SetWindowTextA(strTimer); SetTimer(0,1000,NULL); return TRUE; }SetTimer에서 두번째 인자는 밀리세컨드부분이다. 1000이면 1초를 말한다.
즉 1초마다 갱신되며 OnTimer가 실행되게 된다.
void CToday::OnOK() { KillTimer(0); CDialog::OnOK(); } void CToday::OnCancel() { KillTimer(0); CDialog::OnCancel(); }
종료시점에는 KillTimer를 통해 OnTimer가 계속 호출되지 않도록 하여야 한다. Dialog를 사용하였다면 OK나 Cancel버튼에서 KillTimer를 호출하자.
작성하면 1초마다 시간이 갱신되며 화면에 뿌려지는 모습을 볼 수 있다.
이를 응용하면 다양한 시계작성이 가능할 것이다.