Comment créer un contrôle sélecteur de date et d’heure
Cette rubrique montre comment créer dynamiquement un contrôle sélecteur de date et d’heure (DTP). L’exemple de code C++ associé crée un contrôle DTP dans une boîte de dialogue sans mode. Il utilise le style DTS_SHOWNONE pour permettre à l’utilisateur de simuler la désactivation de la date dans le contrôle.
Bon à savoir
Technologies
Prérequis
- C/C++
- Programmation de l’interface utilisateur Windows
Instructions
Étape 1 :
Inscrivez la classe window en appelant la fonction InitCommonControlsEx et en spécifiant le bit ICC_DATE_CLASSES dans la structure INITCOMMONCONTROLSEX associée.
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
Étape 2 :
Pour créer le contrôle DTP, utilisez la fonction CreateWindowEx . Spécifiez DATETIMEPICK_CLASS comme classe de fenêtre, puis passez le handle à la boîte de dialogue parente.
L’exemple de code C++ suivant utilise la fonction CreateDialog pour créer une boîte de dialogue sans mode. Il appelle ensuite CreateWindowEx pour créer le contrôle 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);
Exemple complet
// 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);
}
Rubriques connexes