Como criar um controle seletor de data e hora
Este tópico demonstra como criar dinamicamente um controle DTP (seletor de data e hora). O exemplo de código C++ que acompanha cria um controle DTP em uma caixa de diálogo sem moderação. Ele usa o estilo DTS_SHOWNONE para permitir que o usuário simule a desativação da data dentro do controle.
O que você precisa saber
Tecnologias
Pré-requisitos
- C/C++
- Programação da interface do usuário do Windows
Instruções
Etapa 1:
Registre a classe window chamando a função InitCommonControlsEx e especificando o bit ICC_DATE_CLASSES na estrutura INITCOMMONCONTROLSEX que a acompanha.
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
Etapa 2:
Para criar o controle DTP, use a função CreateWindowEx. Especifique DATETIMEPICK_CLASS como a classe de janela e passe o identificador para a caixa de diálogo pai.
O exemplo de código C++ a seguir usa a função CreateDialog para criar uma caixa de diálogo sem moderação. Em seguida, ele chama CreateWindowEx para criar o controle 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);
Exemplo 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);
}
Tópicos relacionados