Windows图形界面(GUI)-DLG-C/C++ - 日期时间控件(DateTimePicker)

发布于:2024-07-26 ⋅ 阅读:(104) ⋅ 点赞:(0)

目录

日期时间控件(DateTimePicker)

使用场景

消息处理

示例代码


日期时间控件(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;
	}


网站公告

今日签到

点亮在社区的每一天
去签到