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초마다 시간이 갱신되며 화면에 뿌려지는 모습을 볼 수 있다.
이를 응용하면 다양한 시계작성이 가능할 것이다.
'무언가 만들기 위한 지식 > Win32/MFC' 카테고리의 다른 글
MFC 파일경로 찾기(FileDialog 사용) (3) | 2010.02.20 |
---|---|
MFC SQL 연동하여 파일경로 저장시, Parsing Code (1) | 2010.02.20 |
MFC BMP파일 출력하기(이미지 출력) (10) | 2010.02.19 |
MFC 버튼 스타일 바꾸기 (2) | 2010.02.19 |
MFC 메뉴창 삭제, 창 크기/위치 고정 (0) | 2010.02.19 |