ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MFC] Date Time Picker으로 선택된 날짜 받아오기 & 현재 시간 받아오기
    MFC/Visual C++ 2008 2021. 1. 6. 12:31
    반응형

    Date Time Picker으로 선택된 날짜 받아오기

     

     

    1. Microsoft Visual 2008을 시작해서 프로젝트를 새로 생성해 준다. 프로젝트 이름은 'Test'로 만들었다.

     

     

     

     

    2. 다음을 누르고 넘어가준다. 

     

     

     

     

     

     

    3. 프로젝트 타입을 '대화 상자 기반'으로 변경해주고, '공유 DLL에서 MFC 사용'이 체크 되어 있는지 확인해 준다. 

     

     

     

     

    4. Default 값으로 두고 다음으로 넘어간다.

     

     

     

     

    5. Default 값으로 두고 다음으로 넘어간다.

     

     

     

    6. 생성된 클래스를 확인하고 마침을 눌러 프로젝트 생성을 끝낸다.

     

     

     

     

    7. 프로젝트 생성을 끝내면, 첫 화면으로 아래와 같은 대화 상자가 나타날 것이다. Date Time Picker는 여기에 배치한다.

     

     

     

     

    8. '도구 상자'에서 Data Time Picker와 Static 그리고 Edit 컨트롤을 하나씩 가져와서 배치한다. 

     Static 컨트롤에서 마우스 오른쪽 버튼을 클릭해서 '속성'을 확인해  'Caption'값을 '현재 날짜 : '로 변경한다.

    마찬가지로, Button 컨트롤에서 마우스 오른쪽 버튼을 클릭해서 '속성'을 확인해 'Caption'값을 '날짜 가져오기'로 변경한다. 

     

     

     

    9. 버튼을 눌렀을 때 Date Time Picker로 선택된 날짜를 가져오기 위해서 버튼에서 오른쪽 버튼을 클릭해서

    '이벤트 처리기 추가'를 눌러 버튼이 눌렸을 때 수행될 함수를 추가해준다.

     

     

     

     

    10. 'BN_CLICKED' 를 선택해줘야 버튼를 누르는 이벤트가 발생했을 때, 메세지가 발생한다.

     **클래스 목록을 선택할 때 주의 해준다. 해당 대화 상자를 처리하는 클래스가 아닌 다른 클래스를 선택하면 에러가 발생한다.

     

     

     

     

     

    11. 이벤트를 처리할 함수가 제대로 추가되었다면 아래와 같이 'TestDlg.h'와 'TestDlg.cpp'에 다음과 같이 함수와 메세지가 추가 된 것을 볼 수있다.  

     

    //TestDlg.h

    //TestDlg.cpp

     

     

     

     

    12. 다음은 Date Time Picker에 변수를 추가해준다. 

    변수 이름은 'm_datetime_picker'으로 만들어 주고, 범주가 'Control'인 것을 확인해준다.

     

     

    13. 'TestDlg.h'에 멤버 변수가 추가된 것을 확인 해주고, 'TestDlg.cpp'을 이벤트 처리 함수에 아래와 같이 입력한다. 

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void CTestDlg::OnBnClickedButton1()
    {
        // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
     
        CTime sel_date;
        int sel_year, sel_month, sel_day; 
        m_datetime_picker.GetTime(sel_date);
        sel_year = sel_date.GetYear();
        sel_month = sel_date.GetMonth();
        sel_day = sel_date.GetDay();
    }
    cs

     CTime 클래스를 이용해서 객체를 생성해줘야 Date Time Picker가 가져오는 날짜를 받아서 사용할 수 있다. 

     

    디버깅을 찍어보면 Date Time Picker로 받아온 값이 처음에는 날짜로 보이지 않는 이상한 숫자일 것이다. 

    이 값은 MSDN에 따르면 아마도... 1970 UTC 이후의 시간(초)인것 같다... 검증 해보지 않아서 확실하지 않다.

    이 값을 CTime 클래스가 가지고 있는 함수를 이용해서 년, 월, 일로 변환시켜준다.

     

    변환된 값은 예쁘게 현재 Date Time Picker가 선택한 날짜로 바뀐다! 2021-1-16 !! 

     

     

     

    현재 날짜 구하기

     

    1
    2
    3
    4
    CTime currenttime = CTime::GetCurrentTime();
        currenttime.GetYear();
        currenttime.GetMonth();
        currenttime.GetDay();
    cs

     

    위의 코드처럼 CTime 클래스의 GetCurrentTime() 함수를 이용하면 현재 날짜를 받아올 수 있다!

    728x90

    댓글

Designed by Tistory.