- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> e链接点击跳转博客主页
目录
日期时间控件(DateTimePicker)
使用场景
- 表单中需要用户输入日期或时间的地方,如旅行预订、预约系统等。
- 需要限定输入范围的日期或时间,如生日输入、事件计划等。
- 在软件中需要记录或显示时间戳的功能,如日志记录、历史事件查看等。
消息处理
DTN_DATETIMECHANGE
:当控件中的日期和时间发生变化时,会发送此通知消息。DTN_CLOSEUP
:当日期时间选择控件的下拉列表关闭时,会发送此通知消息。
示例代码
case WM_INITDIALOG:
{
// 初始环境
INITCOMMONCONTROLSEX initComm = { 0 };
initComm.dwSize = sizeof(INITCOMMONCONTROLSEX);
initComm.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&initComm);
// 初始控件
HWND hDataTime = GetDlgItem(hwnd, IDC_DATETIMEPICKER2);
// 设置时间
SYSTEMTIME sysTime = { 0 };
sysTime.wYear = 2024;
sysTime.wMonth = 1;
sysTime.wDay = 1;
DateTime_SetSystemtime(hDataTime, GDT_VALID, &sysTime);
// 设置区间
SYSTEMTIME sysTimeRange[2] = { 0 };
sysTimeRange[0].wYear = 2020;
sysTimeRange[0].wMonth = 1;
sysTimeRange[0].wDay = 1;
sysTimeRange[1].wYear = 2030;
sysTimeRange[1].wMonth = 1;
sysTimeRange[1].wDay = 1;
DateTime_SetRange(hDataTime, GDTR_MIN | GDTR_MAX, &sysTimeRange);
return TRUE;
}
case WM_NOTIFY:
{
NMHDR* info = (NMHDR*)lParam;
if (info->idFrom == IDC_DATETIMEPICKER2 && info->code == DTN_CLOSEUP)
{
SYSTEMTIME sysTime = { 0 };
DateTime_GetSystemtime(info->hwndFrom, &sysTime);
OutputDebugString(L"DTN_CLOSEUP");
}
return TRUE;
}