Cómo crear un control selector de fecha y hora
En este tema se muestra cómo crear dinámicamente un control selector de fecha y hora (DTP). El ejemplo de código de C++ adjunto crea un control DTP en un cuadro de diálogo modelado. Usa el estilo DTS_SHOWNONE para permitir al usuario simular la desactivación de la fecha dentro del control.
Lo que necesita saber
Tecnologías
Requisitos previos
- C/C++
- Programación de la interfaz de usuario de Windows
Instrucciones
Paso 1:
Registre la clase de ventana llamando a la función InitCommonControlsEx y especificando el bit de ICC_DATE_CLASSES en la estructura INITCOMMONCONTROLSEX correspondiente.
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
Paso 2:
Para crear el control DTP, use la función CreateWindowEx . Especifique DATETIMEPICK_CLASS como clase de ventana y pase el identificador al cuadro de diálogo primario.
En el ejemplo de código de C++ siguiente se usa la función CreateDialog para crear un cuadro de diálogo modeless. A continuación, llama a CreateWindowEx para crear el control DTP.
hwndDlg = CreateDialog (g_hinst,
MAKEINTRESOURCE(IDD_DIALOG1),
hwndMain,
DlgProc);
if(hwndDlg)
hwndDP = CreateWindowEx(0,
DATETIMEPICK_CLASS,
TEXT("DateTime"),
WS_BORDER|WS_CHILD|WS_VISIBLE|DTS_SHOWNONE,
20,50,220,20,
hwndDlg,
NULL,
g_hinst,
NULL);
Ejemplo completo
// CreateDatePick creates a DTP control within a dialog box.
// Returns the handle to the new DTP control if successful, or NULL
// otherwise.
//
// hwndMain - The handle to the main window.
// g_hinst - global handle to the program instance.
HWND WINAPI CreateDatePick(HWND hwndMain)
{
HWND hwndDP = NULL;
HWND hwndDlg = NULL;
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
hwndDlg = CreateDialog (g_hinst,
MAKEINTRESOURCE(IDD_DIALOG1),
hwndMain,
DlgProc);
if(hwndDlg)
hwndDP = CreateWindowEx(0,
DATETIMEPICK_CLASS,
TEXT("DateTime"),
WS_BORDER|WS_CHILD|WS_VISIBLE|DTS_SHOWNONE,
20,50,220,20,
hwndDlg,
NULL,
g_hinst,
NULL);
return (hwndDP);
}
Temas relacionados