나의질문답

mfc,date time picker에 대한 질문입니다.

예쁜꽃이피었으면 2015. 7. 29. 10:52

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=956485&ref=956482&page=1#Contents956485



안녕하세요.

날짜처리하는 걸로 질문을 몇번째 올리는지 모르겠네요.

 

화면에 date time picker를 하나 놨습니다.

properties에서 format은 short date 로 했고요,

class wizard에서 datetimepicker에 대해  type은 COleDateTime / Member는 m_datepicker로 놨습니다.

그리고 프로젝트명View.h에 보면 COleDateTime m_datepicker; 이렇게 보이고요.

프로젝트명View.cpp에는 DDX_Control(pDX, IDC_DATETIMEPICKER1, m_datepicker);

이렇게 생기는데 m_datepicker이부분에 빨간줄이 생깁니다.

a reference of type "CWnd &" (not const-qualified) cannot be initialized with a value of type "ATL::COleDateTime"  이렇게 뜨는데 질문1.자동으로 만들어 진 것임에도 에러가 생기는 이유가 궁금합니다.


에러가 나는 부분인

프로젝트명View.cpp에는 DDX_Control(pDX, IDC_DATETIMEPICKER1, m_datepicker);

이 부분을 주석처리하고 

 

UpdateData(TRUE);
int nYear = m_datepicker.GetYear();
int nMonth = m_datepicker.GetMonth();
int nDay = m_datepicker.GetDay();
int nHour = m_datepicker.GetHour();
int nMin = m_datepicker.GetMinute();
int nSec = m_datepicker.GetSecond();
 
COleDateTime t(nYear, nMonth, nDay, nHour, nMin, nSec);
CString str = t.Format(_T("%Y-%m-%d %p %H:%M:%S"));
AfxMessageBox(str);
UpdateData(false);
이렇게 해봤습니다. 
 
다이얼로그에서 보여지는 것은 2015-07-29형식의 날짜뿐인데
가져올 수 있는 값은 오전/오후와 시분초까지 됩니다.
질문2. 다이얼로그 화면에서 날짜뿐만아니라 시분초까지 한번에 입력시키는 모양으로 변경할 수 있나요?
있다면 검색어라도 알려주셨으면 좋겠습니다. 
 -> 날짜 + 시간

 

갱신에 대한 질문입니다. 다른분들의 소스를 보니 

UpdateData(TRUE);

UpdateData(false); 이런식으로 하시던데 질문3.  어떻게 해야 날짜와 시간에 대해 수정된 정보를 읽어올 수 있나요? 

지금은 프로젝트를 실행시켰을 때의 날짜와 시간만 보이고

날짜나 시간을 바꾼 후에도 시작할 때의 날짜와 시간만 보입니다. 

함수를 따로 만들어서 사용하는 것인가요?

 


 

답변부탁드립니다. 감사합니다..







1. intelisense 오류로 보입니다. 실제 컴파일하는데 문제가 없다면 무시하세요.

 

2. 날짜와 시간을 입력받는 datetime picker 를 각각 두시고, 두개를 조합하여 하나의 COleDateTime 변수를 만들어내세요.

 

3. UpdateData(TRUE); 는 컨트롤의 상태를 연결된 COleDateTime 변수에 적용하는 것이고

UpdateData(FALSE); 는 그 반대로 COleDateTime 값을 기반으로 컨트롤 상태를 변경시키는 것입니다.

 

기초 없이 주먹구구식으로 개발하시기 보다는 C++ 기초 도서와 MFC 도서 정도 한권씩 정도는 정독하시길 추천해드립니다.

반응형