학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

중요함수    1

시계 만들기

학습목표

타이머의 동작을 알아보고 활용을 알아 본다.

학습주제

시간을 표시하는 두가지 방법을 소개 하겠습니다.

타이머를 0.3 간격 주기적으로 동작시켜 시간을 측정하여 텍스트로 출력시킨다.

방법1. CTime 클래스와 함수를 사용한다.

 

예습내용

다음 함수와 클래스를 알아 본다.

CTime

실습방법

   

(1)   프로젝트만들기에서 “MFC 응용프로그램”->”대화상자기반 선택하고 이름을 Clock으로 한다. 나머지는 기본 선택으로 한다.

(2)   클래스에서 “CClockDlg” 선택하고 메시지”->”WM_TIMER”, 선택하여 “OnTimer” 함수를 만든다.

BOOL CClockDlg::OnInitDialog() SetTimer(1,500,NULL); 추가하여 타이머가 0.5초마다 동작하게 한다.

 

BOOL CClockDlg::OnInitDialog()

{

        CDialog::OnInitDialog();

 

        // 시스템메뉴에"정보..." 메뉴항목을추가합니다.

 

        // IDM_ABOUTBOX는시스템명령범위에있어야합니다.

        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

        ASSERT(IDM_ABOUTBOX < 0xF000);

 

        CMenu* pSysMenu = GetSystemMenu(FALSE);

        if (pSysMenu != NULL)

        {

                BOOL bNameValid;

                CString strAboutMenu;

                bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

                ASSERT(bNameValid);

                if (!strAboutMenu.IsEmpty())

                {

                        pSysMenu->AppendMenu(MF_SEPARATOR);

                        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

                }

        }

 

        // 이대화상자의아이콘을설정합니다. 응용프로그램의주창이대화상자가아닐경우에는

        //  프레임워크가이작업을자동으로수행합니다.

        SetIcon(m_hIcon, TRUE);                  // 큰아이콘을설정합니다.

        SetIcon(m_hIcon, FALSE);         // 작은아이콘을설정합니다.

 

        // TODO: 여기에추가초기화작업을추가합니다.

        SetTimer(1,500,NULL);

        return TRUE;  // 포커스를컨트롤에설정하지않으면TRUE를반환합니다.

}

 

(3)   Edit Box 만든다.

 

(5)   Edit Box 마우스 오른쪽 버튼을 눌러 변수추가를 선택한다.

 

그림과 같이 도구상자에서 “CWNumEdit Control” 삽입 한다.

“Style”에서 인디게이터 바꾸고 “Format”에서 아래 그림과 같이 “Time” 선택한다.

아래 그림과 같이 변수를 추가한다. 값이 “0”이면 “19991230이다.

 

OnTimer() 함수에 시간을 얻고 Edit Box 출력하기 위한 프로그램을 추가한다.

 

void CClockDlg::OnTimer(UINT_PTR nIDEvent)

{

        // TODO: 여기에메시지처리기코드를추가및/또는기본값을호출합니다.

        CTime NowTime = CTime::GetCurrentTime(); //현재시간측정

        m_Clock.Format(_T("%d%d%d%d%d%d"),

                NowTime.GetYear(),NowTime.GetMonth(),NowTime.GetDay(),

                NowTime.GetHour(),NowTime.GetMinute(),NowTime.GetSecond());

        UpdateData(FALSE);

        m_ClockNum.Value = 1/24.*NowTime.GetHour()

                +1/24./60.*NowTime.GetMinute() +1/24./60./60.*NowTime.GetSecond();

        CDialog::OnTimer(nIDEvent);

}

 

 

 

   

 

중요함수