我网上下载了一个基于毫秒的时间控件类,但是不知道怎么用?请帮我写个demo
vs unicode + mfc
谢谢
基于毫秒的时间控件类,帮我写个demo
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- Zyb0627 2023-03-03 10:00关注
以下是一个基于毫秒的时间控件的示例代码,使用Visual Studio、Unicode字符集和MFC框架:
首先,在资源编辑器中创建一个编辑框控件,类型设置为“编辑”,ID设置为 IDC_TIME_EDIT。然后,在对话框类的头文件中添加以下代码:
class CMyDialog : public CDialogEx { public: CMyDialog(CWnd* pParent = nullptr); // ... protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support afx_msg void OnEnChangeTimeEdit(); DECLARE_MESSAGE_MAP() private: CEdit m_timeEdit; // 毫秒时间控件 };
在DoDataExchange函数中添加以下代码,将编辑框控件关联到成员变量 m_timeEdit:
void CMyDialog::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_TIME_EDIT, m_timeEdit); }
然后,在OnInitDialog函数中添加以下代码,设置编辑框控件的格式为“hh:mm:ss.mmm”,并将其默认值设置为当前时间:
BOOL CMyDialog::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置时间格式为“hh:mm:ss.mmm” m_timeEdit.SetWindowTextW(L"00:00:00.000"); // 获取当前时间 SYSTEMTIME st; GetLocalTime(&st); // 将当前时间设置为默认值 CString strTime; strTime.Format(L"%02d:%02d:%02d.%03d", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds); m_timeEdit.SetWindowTextW(strTime); return TRUE; }
接下来,在对话框类的消息映射中添加以下代码,处理编辑框控件内容改变的事件:
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx) ON_EN_CHANGE(IDC_TIME_EDIT, &CMyDialog::OnEnChangeTimeEdit) END_MESSAGE_MAP()
在OnEnChangeTimeEdit函数中添加以下代码,用于验证用户输入的时间格式是否正确:
void CMyDialog::OnEnChangeTimeEdit() { // 获取用户输入的时间 CString strTime; m_timeEdit.GetWindowTextW(strTime); // 正则表达式验证时间格式是否正确 CAtlRegExp<> regex; REParseError status = regex.Parse(L"^(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d{3})$"); if (status == REPARSE_ERROR_OK) { CAtlREMatchContext<> match; if (regex.Match(strTime, &match)) { // 时间格式正确 } else { // 时间格式错误,恢复上一次正确的时间 m_timeEdit.SetWindowTextW(m_lastTime); } } // 记录上一次正确的时间 m_lastTime = strTime; }
最后,将上述代码添加到对话框类的实现文件中,并在需要创建该对话框的代码中使用以下代码创建对话框实例:
CMyDialog dlg; dlg.DoModal();
回答不易,还请能够采纳!!!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Vue3 大型图片数据拖动排序
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大