[MFC] 타이머, WM_TIMER

이번에는 타이머에 대해 알아보겠습니다.
WM_TIMER 메세지로 정해진 시간마다 반복적으로 실행시킬 수 있는 방법으로, 정확한 시간에 행해야 하는 경우엔 쓰면 안되지만 간단히 만들고 삭제할 수 있어 많이 사용되는 방식입니다.
정확한 시간간격 마다, 복잡한 연산을 하는 경우에는 타이머를 추천하지 않습니다.
우측의 메시지에서 WM_TIMER를 눌러 OnTimer를 선택합니다.

그러면 아래와 같이 OnTimer 함수가 추가됩니다.

void CMFCApplication2Dlg::OnTimer(UIT_PTR nIDEvent)
{
    CDialogEx::OnTimer(nIDEvent);
}

리소스에 스태틱 컨트롤을 만드셔서 아래 그림과 같이 ID, Aligned Text, Center Image 속성을 변경합니다.

그리고 스태틱 컨트롤을 우클릭 – 변수 추가를 눌러 변수를 추가합니다. 변수명은 m_staticDisp로 하겠습니다.

그리고 버튼 두개를 만들어 하나는 시작, 하나는 종료로 만드시고 버튼을 더블 클릭하여 함수를 만듭니다.
그리고 각각의 함수에 아래와 같은 코드를 집어 넣습니다.

m_iCount = 0;

그리고 OnTimer에 아래와 같은 함수를 입력합니다.

void CMFCApplication2Dlg::OnTimer(UIT_PTR nIDEvent)
{
    CString sTxt;
    switch(nIDEvent)
    {
    case 1:
        sTxt.Format(_T("%d"), m_iCount++);
        m_staticDisp.SetWindowText(sTxt);
        break;
    }
    CDialogEx::OnTimer(nIDEvent);
}

여기서 nIDEvent는 타이머를 만들 때 입력했던 첫번째 인자값 입니다. 아이디에 맞춰서 코딩하시면 됩니다.
모든 코드를 입력하셨으면 프로그램을 실행해서 시작 버튼을 클릭해 봅니다.