MFC SDI 自绘CDateTimeCtrl 实现"年月日时分秒",并存入数据库(DATATIME)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC SDI 自绘CDateTimeCtrl 实现"年月日时分秒",并存入数据库(DATATIME)相关的知识,希望对你有一定的参考价值。
if (m_time_end==NULL)
m_time_end = new CDateTimeCtrl();
m_time_end->Create(WS_VISIBLE | WS_CHILD | WS_TABSTOP | DTS_SHOWNONE | DTS_SHORTDATEFORMAT,
CRect(220, 20, 400, 45), this, 2);
m_time_end->SetFormat(_T("yyyy-MM-dd HH:mm:ss"));
//CTime TimeTemp=TimeTemp.GetCurrentTime();
m_time_end->SetTime(&TimeTemp);
我用以上代码实现了 一个CDateTimeCtrl 显示“年月日时分秒”
可现在 我想将该控件的值 存到数据库中(DATATIME) 麻烦大神写两句代码?
MFC:你能在 CDateTimeCtrl 中改变旋转的加速度吗?
【中文标题】MFC:你能在 CDateTimeCtrl 中改变旋转的加速度吗?【英文标题】:MFC: Can you change the acceleration of the spin in a CDateTimeCtrl? 【发布时间】:2020-06-11 16:42:36 【问题描述】:我正在使用 VS-2015,我正在尝试扩展 CDateTimeCtrl
以检测它何时超过 59' 并相应地更改小时。
现在的问题是,当我按住箭头进行递增或递减时,它会加速,我无法再检查它是否从 59 变为 00,反之亦然,因为在超过 1' 的时间内递增或递减你可以从50 到 10。
我知道CEdit
+ CSpinButtonCtrl
,但我想知道是否可以将加速度改为一分钟一分钟。
【问题讨论】:
【参考方案1】:您可以使用类GetDateTimePickerInfo()
成员函数检索CDateTimeCtrl
对象包含的“旋转按钮”的句柄,该函数将位于返回的DATETIMEPICKERINFO
结构的hwndUD
成员中。
然后,您可以通过向其发送UDM_SETACCEL
消息来有效地禁用该旋转控件的加速,其中wParam
设置为1
和lParam
指向UDACCEL
结构的单元素数组;将该结构元素的加速时间 (nSec
) 设置为一个非常大的值,并且(只是为了确定)将加速增量值 (nInc
) 设置为“保持”为 1:
CDateTimeCtrl MyDTC;
///...
DATETIMEPICKERINFO dtInfo;
MyDTC.GetDateTimePickerInfo(&dtInfo);
UDACCEL AccelList[1] = UINT_MAX, 1 ;
::SendMessage(dtInfo.hwndUD, UDM_SETACCEL, 1, reinterpret_cast<LPARAM>(AccelList));
如果 ~8,166 年(UINT_MAX
秒)的时间太短,您可以在列表中添加更多(相同的)UDACCEL
结构。 ?
您可能可以通过将0
作为wParam
参数传递给SetAccel
函数(以及NULL
用于`lParam)来完全禁用加速,但这是不是记录在案的功能。 (不过值得一试吗?)
【讨论】:
以上是关于MFC SDI 自绘CDateTimeCtrl 实现"年月日时分秒",并存入数据库(DATATIME)的主要内容,如果未能解决你的问题,请参考以下文章
MFC 把CString格式的时间添加到时间控件(CDateTimeCtrl)中去
MFC 如何在CDateTimeCtrl控件里初始显示出字符串“YYYY-MM-DD”