성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • Boot Code 분석
  • WINAPI
  • ARM Reverse Engineering
  • 문자열 나누기
  • MFC

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

MFC

[MFC] Month Calendar 컨트롤, Date Time Picker 컨트롤

2014. 4. 2. 22:17

열혈강의 VISUAL C++ 2008 MFC 윈도우 프로그래밍 참고

MSDN 참고


아래는 MFC의 달력 컨트롤을 사용한 예제입니다.

Month Calendar 컨트롤, Date Time Picker 컨트롤과 List Box를 사용하였습니다.

Month Calendar에서 선택한 값을 리스트에 추가하고, Date Time Picker의 날자를 기준으로 특정 일 만큼 이동하는 예제입니다.


새로운 프로젝트 생성

 MFC Application으로 새로운 프로젝트를 생성합니다.


다이얼로그를 클릭하고, 유니코드는 사용하도록 하고, 완료를 클릭합니다.


컨트롤러 추가

 도구상자(Toolbox)에서 Month Calendar Control을 추가합니다.


변수 추가

 Month Calendar Control의 변수를 추가해줍니다. 카테고리를 Value로 선택하고, 이름은 m_timeMC로 추가합니다.


 도구상자(Toolbox)에서 Date Time Picker을 추가하고, 변수를 추가합니다. Month Calendar와 동일하게 카테고리를 value로 선택하고, m_timeTP로 추가합니다.



 도구상자(Toolbox)에서 List Box을 추가합니다.


 도구상자(Toolbox)에서 Button 2개와 입력 컨트롤을 추가합니다.


 나머지 List Box, Edit box 변수를 추가합니다. 저는 List Box = m_listBox(카테고리 control), Edit box = m_strDay(카테고리 value) 변수로 추가하였습니다.


버튼 2개는 더블클릭 또는 이벤트 핸들러를 추가합니다. 이벤트 핸들러는 BN_CLICKED로 Cex00calendarDlg에 추가합니다.


멤버의 선언과 초기화 코드 - ex00calendarDlg.h

protected:
	HICON m_hIcon;

	// Generated message map functions
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	COleDateTime m_timeMC;  //왼쪽에 있는 Month Calendar 컨트롤
	COleDateTime m_timeTP; //오른쪽에 있는 Date Time Picker
	CListBox m_listBox; //List box
	afx_msg void OnBnClickedButton2(); //버튼 1
	afx_msg void OnBnClickedButton3(); //버튼 2
	CString m_strDay; //입력 박스

소스코드 초기화 부분 - ex00calendarDlg.cpp

Cex00calendarDlg::Cex00calendarDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(Cex00calendarDlg::IDD, pParent)
	, m_timeMC(COleDateTime::GetCurrentTime()) //Month Calendar 컨트롤
	, m_timeTP(COleDateTime::GetCurrentTime()) //Date Time Picker 컨트롤
	, m_strDay(_T(""))  //입력 박스 초기화
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

마우스 클릭 소스코드(리스트에 추가) - ex00calendarDlg.cpp

/* button 클릭 시 왼쪽의 달력에서 년, 월, 일을 List 에 추가하는 코드 */
void Cex00calendarDlg::OnBnClickedButton2()
{
	// TODO: Add your control notification handler code here
	UpdateData();
	CString str;
	str.Format(_T("%d-%d-%d"), m_timeMC.GetYear(), m_timeMC.GetMonth(), m_timeMC.GetDay());
	m_listBox.AddString(str);
	UpdateData(false);
}

마우스 클릭 소스코드(특정일로 이동) - ex00calendarDlg.cpp

/* 버튼 클릭 시 오른쪽 Date Time Picer을 기준으로 COleDateTimeSpan(일, 시간, 분, 초)를 뺀 만큼 이동하는 소스코드 */
void Cex00calendarDlg::OnBnClickedButton3()
{
	// TODO: Add your control notification handler code here
	UpdateData();
	int day = _ttoi(m_strDay);
	//COleDateTimeSpan 일, 시간, 분, 초
	m_timeMC = (m_timeTP - COleDateTimeSpan(day, 0, 0, 0));
	UpdateData(false);
}

추가로 COleDateTime은 년, 월, 일, 시, 분, 초를  사용 수 있습니다.

  MSDN 링크 : http://bit.thdev.net/JwTxVw

COleDateTimeSpan은 일, 시, 분, 초를 사용 수 있습니다.

  MSDN 링크 : http://bit.thdev.net/KmRIqA



저작자표시 (새창열림)

'MFC' 카테고리의 다른 글

[MFC] MFC에서 Chart를 쉽게 그리는 라이브러리 ChartDirector  (0) 2014.04.02
[MFC] IP Address Control 사용하기  (0) 2014.04.02
[MFC] Animation Control 사용하기  (2) 2014.04.02
[MFC] RichEdit Control 2.0 사용하기 ( Edit Control 보다 다양한 기능 )  (0) 2014.04.02
[MFC] 유니코드 멀티바이트 UTF-8 문자열 인코딩 변환 모음  (2) 2014.04.02
    'MFC' 카테고리의 다른 글
    • [MFC] MFC에서 Chart를 쉽게 그리는 라이브러리 ChartDirector
    • [MFC] IP Address Control 사용하기
    • [MFC] Animation Control 사용하기
    • [MFC] RichEdit Control 2.0 사용하기 ( Edit Control 보다 다양한 기능 )
    성엽이
    성엽이

    티스토리툴바