Use the Date/Time Picker common control (IE3+)

NOTE: You must also have the new COMCTL32.DLL (version 4.7 or later). This is installed with Internet Explorer 3 and will come standard with the new Windows 98. So if you are using VC++ 5 then you probably already have this DLL.

The API support is available in VC++ 5.0. Otherwise, you need to download the ActiveX SDK from the MS website. To use the date/time picker, do the following:

Put the following in your app's InitInstance:

        icc.dwSize = sizeof(INITCOMMONCONTROLSEX);
        icc.dwICC = ICC_DATE_CLASSES;

Insert a custom control in your dialog where you want the date or time picker. For the class name, enter "SysDateTimePick32". For the style, see commctrl.h and search for the DTS_* style and enter the desired style (usually either DTS_SHORTDATEFORMAT or DTS_TIMEFORMAT). Be sure to make the custom control visible and have a tabstop.

You can always use CreateEx() to create them manually.

You can DDX the control to a SYSTEMTIME structure with the following code:

void AFXAPI DDX_DateTime(CDataExchange *pDX, int nIDC, 
        SYSTEMTIME &SysTime)
        HWND hWnd = pDX->m_pDlgWnd->GetDlgItem(nIDC)->GetSafeHwnd();
        ASSERT (hWnd != NULL);

        if (pDX->m_bSaveAndValidate)
                ::SendMessage(hWnd, DTM_GETSYSTEMTIME, 0, 
        else // initializing
                ::SendMessage(hWnd, DTM_SETSYSTEMTIME, GDT_VALID,

void CCtrlTestDlg::DoDataExchange(CDataExchange* pDX)
        // m_Date and m_Time  are SYSTEMTIME structures
        DDX_DateTime(pDX, IDC_DATE, m_Date); 
        DDX_DateTime(pDX, IDC_TIME, m_Time);

This article was originally published on September 25th, 1998
Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date