Come creare un controllo selezione data e ora
In questo argomento viene illustrato come creare dinamicamente un controllo selezione data e ora (DTP). Nell'esempio di codice C++ a discesa viene creato un controllo DTP in una finestra di dialogo senza modalità. Usa lo stile DTS_SHOWNONE per consentire all'utente di simulare la disattivazione della data all'interno del controllo.
Informazioni importanti
Tecnologie
Prerequisiti
- C/C++
- Programmazione dell'interfaccia utente di Windows
Istruzioni
Passaggio 1:
Registrare la classe window chiamando la funzione InitCommonControlsEx e specificando il bit ICC_DATE_CLASedizione Standard S nella struttura INITCOMMONCONTROL edizione Standard X associata.
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
Passaggio 2:
Per creare il controllo DTP, usare la funzione CreateWindowEx. Specificare DATETIMEPICK_CLASS come classe finestra e passare l'handle alla finestra di dialogo padre.
Nell'esempio di codice C++ seguente viene usata la funzione CreateDialog per creare una finestra di dialogo senza modalità. Chiama quindi CreateWindowEx per creare il controllo 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);
Esempio 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);
}
Argomenti correlati