< ÀϽÃ(³¯Â¥½Ã°£) ÁöÁ¤ >
WTLÀº °ø¿ë ÄÁÆ®·ÑÀÇ ÀϽà ÁöÁ¤ ÄÁÆ®·ÑÀ» CDateTimePickerCtrlT À̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼ ĸ½¶ÈÇϰí ÀÖ½À´Ï´Ù. ÅÛÇø´ Àμö¿¡´Â Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù¸¸ ±× Ŭ·¡½º´Â CDateTimePickerCtrlT Ŭ·¡½ºÀÇ base class·Î¼ »ç¿ëµË´Ï´Ù. atlctrls.h Çì´õ¿¡¼´Â typedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.
|
// atlctrls.h typedef CDateTimePickerCtrlT<ATL::CWindow> CDateTimePickerCtrl; |
À̰ÍÀº CDateTimePickerCtrl Ŭ·¡½º´Â CWindowŬ·¡½ºÀÇ »ó¼Ó Ŭ·¡½ºÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
¡¡WTLÀÇ CDateTimePickerCtrlŬ·¡½º´Â MFCÀÇ CDateTimeCtrl Ŭ·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CDateTimePickerCtrlŬ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ ÀÔ´Ï´Ù. ÀϽà ÁöÁ¤ ÄÁÆ®·ÑÀ» µå·Ó ´Ù¿îÇÏ¸é µðÆúÆ®·Î ¿ù°£ ͏°´õ ÄÁÆ®·ÑÀÌ Ç¥½ÃµË´Ï´Ù¸¸ , ±× ÇϺο¡ ÀÖ´Â ¿À´ÃÀÇ ÀÏÀÚ¸¦ Ç¥½ÃÇÏ´Â ºÎºÐÀ» »èÁ¦ÇØ Ç¥½ÃÇÕ´Ï´Ù.

|
// stdafx.h #include <atlbase.h> #include <atlapp.h> extern CAppModule _Module; #include <atlwin.h> #include <atlcrack.h> #include <atlmisc.h> #include <atlctrls.h> // ÄÁÆ®·Ñ¿ë Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ |
|
// maindlg.h class CMainDlg : public CDialogImpl<CMainDlg> { public: enum { IDD = IDD_MAINDLG }; CDateTimePickerCtrl
m_datetime_getdate; // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
NOTIFY_HANDLER_EX(IDC_DATETIMEPICKER_GETDATE, DTN_DROPDOWN, OnDateTimeDropDown)
COMMAND_ID_HANDLER_EX(IDOK, OnOK)
COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel) END_MSG_MAP() LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){ // ½ºÅ©¸°ÀÇ Áß¾Ó¿¡ ¹èÄ¡ CenterWindow(); // Å« ¾ÆÀÌÄÜ ¼³Á¤
HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON)); SetIcon(hIcon, TRUE); // ÀÛÀº ¾ÆÀÌÄÜ ¼³Á¤
HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON)); SetIcon(hIconSmall, FALSE); // ÄÁÆ®·Ñ ¼³Á¤ m_datetime_getdate = GetDlgItem(IDC_DATETIMEPICKER_GETDATE); // ÀϽà Çü½ÄÀÇ ¼³Á¤ m_datetime_getdate.SetFormat(_T("yyyy-MM-dd")); // Ãʱ⠻óÅÂÀÇ ÀϽà ¼³Á¤
SYSTEMTIME st = {0}; st.wYear = 2004; st.wMonth = 2; st.wDay = 7; m_datetime_getdate.SetSystemTime(GDT_VALID, &st); return TRUE; } LRESULT OnDateTimeDropDown(LPNMHDR pnmh){ CMonthCalendarCtrl calendar = m_datetime_getdate.GetMonthCal(); calendar.ModifyStyle(0, MCS_NOTODAY); CRect rcCalendar; calendar.GetMinReqRect(rcCalendar); calendar.MoveWindow(rcCalendar); return 0; } void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){ EndDialog(nID); } void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){ EndDialog(nID); } }; |
|
// Control.cpp #include "stdafx.h" #include "resource.h" #include "maindlg.h" CAppModule _Module; int WINAPI _tWinMain(HINSTANCE
hInstance, HINSTANCE, LPTSTR lpCmdLine,
int nCmdShow) { HRESULT hRes = ::CoInitialize(NULL); ATLASSERT(SUCCEEDED(hRes)); ::DefWindowProc(NULL,
0, 0, 0L); AtlInitCommonControls(ICC_COOL_CLASSES
| ICC_WIN95_CLASSES | ICC_DATE_CLASSES); hRes
= _Module.Init(NULL, hInstance); ATLASSERT(SUCCEEDED(hRes)); int nRet = 0; // BLOCK: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà { CMainDlg dlgMain; nRet = dlgMain.DoModal(); } _Module.Term(); ::CoUninitialize(); return nRet; } |
¡¡¿ì¼± ¸®¼Ò½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ´ÙÀ̾ó·Î±×¿¡ ÀϽà ÁöÁ¤ ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ ¸®¼Ò½º ID¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù.
|
ÄÁÆ®·Ñ ¸í |
¸®¼Ò½ºID |
|
ÀϽà ÁöÁ¤ |
IDC_DATETIMEPICKER_GETDATE |
¡¡´ÙÀ½¿¡ stdafx.h ¿¡¼´Â CDateTimePickerCtrl Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.
¡¡CMainDlgŬ·¡½º¿¡¼´Â ¿ì¼± ÀϽà ÁöÁ¤ ÄÁÆ®·Ñ¿ëÀ¸·Î
CDateTimePickerCtrl Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇÕ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϱâ À§Çؼ´Â WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î ÄÁÆ®·ÑÀÇ ÇÚµéÀ» ´ëÀÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¡¡´ÙÀ½¿¡ WM_INITDIALOG
¸Þ¼¼Áö Çڵ鷯·Î ÀϽà ÁöÁ¤ ÄÁÆ®·ÑÀÇ ÀϽà ǥ½Ã Æ÷¸ËÀ» ¡¸yyy-MM-dd¡¹À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ±×¸®°í SetSystemTime()¿¡ ÀÇÇØ Ãʱ⠻óÅÂÀÇ ÀϽø¦ 2004-02-07·Î ¼³Á¤ÇÕ´Ï´Ù.
¡¡´ÙÀ½¿¡ ÅëÁö Äڵ尡DTN_DROPDOWNÀÇ ÀϽà ÁöÁ¤ ÄÁÆ®·Ñ¿ë ÅëÁö ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ±× Çڵ鷯¿¡¼´Â ÀϽà ÁöÁ¤ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®·ÎºÎÅÍ GetMonthCal()¿¡ ÀÇÇØ ¿ù°£ ͏°´õ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®¸¦ ÃëµæÇØ MCS_NOTODAY½ºÅ¸ÀÏÀ» Ãß°¡Çϰí ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ¿ù°£ ͏°´õ ÄÁÆ®·ÑÀÇ ÇϺο¡ ÀÖ´Â ¿À´ÃÀÇ ÀÏÀÚ¸¦ Ç¥½ÃÇÏ´Â ºÎºÐÀÌ °ø¹éÀÌ µË´Ï´Ù. À̹ø ¿¹¿¡¼´ÂGetMinReqRect()¿¡ ÀÇÇØ ±× °ø¹é ºÎºÐÀ» »ý·«ÇÑ ¿ù°£ ͏°´õ ÄÁÆ®·Ñ ±¸ÇüÀ» ÃëµæÇØ MoveWindow()¿¡ ÀÇÇØ ±× ±¸Çü »çÀÌÁî·Î º¯°æÇϰí ÀÖ½À´Ï´Ù.
µ¡ºÙ¿© ¿ù°£ ͏°´õ ÄÁÆ®·Ñ ¿ÀºêÁ§Æ®´Â ÀϽà ÁöÁ¤ ÄÁÆ®·ÑÀÇ È»ìÇ¥ ¹öưÀ» Ŭ¸¯ÇØ Ç¥½Ã(µå·Ó ´Ù¿î)ÇßÀ» ¶§ ¹Û¿¡ ÃëµæÇÒ ¼ö ¾ø½À´Ï´Ù.
¡¡¸¶Áö¸·À¸·Î _tWinMain()¿¡¼ICC_DATE_CLASSESÇ÷¡±×¸¦ ÁöÁ¤ÇØ AtlInitCommonControls()¸¦ È£ÃâÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ÀϽà ÁöÁ¤ ÄÁÆ®·ÑÀÌ »ç¿ë °¡´ÉÇÏ°Ô µË´Ï´Ù. µ¡ºÙ¿© ºñ±³Àû »ç¿ë ºóµµ°¡ ³ô´Ù°í »ý°¢µÇ´ÂICC_COOL_CLASSESÇ÷¡±×¿ÍICC_WIN95_CLASSESÇ÷¡±×µµ µ¿½Ã¿¡ ÁöÁ¤ÇØ ÀÖ½À´Ï´Ù¸¸ À̹ø ¿¹ ¿¡¼´Â ÀÌ µÎ °³ÀÇ Ç÷¡±×´Â ¾ø¾îµµ ±¦Âú½À´Ï´Ù.