我使用的是VS-2015,我正在尝试扩展 CDateTimeCtrl
来检测何时超过59'并相应地改变小时。
现在的问题是,当我按住箭头递增或递减时,它就会加速,我无法再检查它是否从59变为00,或者反之亦然,因为在超过1'的情况下增加或减少,你可以从50变为10。
我知道 CEdit
+ CSpinButtonCtrl
但我想知道是否可以将加速度改为一分钟一个。
你可以检索你的 CDateTimeCtrl
对象的包含的 "旋转按钮",使用类 GetDateTimePickerInfo()
成员函数,它将在 hwndUD
归国人员 DATETIMEPICKERINFO
结构。
然后,您可以通过向自旋控制发送 UDM_SETACCEL
讯息,与 wParam
设为 1
和 lParam
指向一个1元素的 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));
如果~8166年UINT_MAX
秒)的时间太短了,你可以直接添加更多(相同的)的 UDACCEL
😊
你 可 可以通过以下方式完全禁止加速 0
作为 wParam
争论,以 SetAccel
功能 NULL
为`lParam),但这不是一个记录在案的功能。(但值得一试?)