[我正在使用VS-2015,我正尝试扩展CDateTimeCtrl
以检测它何时超过59',相应地更改小时数。
现在的问题是,当我按住箭头增加或减少时,它会加速,并且我无法再检查它是否从59更改为00,反之亦然,因为增加或减少超过1',您就可以从50开始到10。
我知道CEdit
+ CSpinButtonCtrl
,但是我想知道是否可以仅将加速度更改为一分钟一分钟。
谢谢,抱歉我的英语。不是我的母语。
您可以使用类CDateTimeCtrl
成员函数来检索GetDateTimePickerInfo()
对象包含的“旋转按钮”的句柄,该函数将位于返回的GetDateTimePickerInfo()
结构的hwndUD
成员中。
然后您可以通过向其发送DATETIMEPICKERINFO
消息(其中UDM_SETACCEL
设置为UDM_SETACCEL
,并且wParam
指向1
结构的1元素数组)来有效地禁用该旋转控件的加速;将该结构元素的加速时间(lParam
)设置为非常大的值,并且(请确保)将加速增量值(UDACCEL
)设置为“保持”为1:
UDACCEL
如果〜8,166年(nSec
秒)太短了,您可以在列表中添加更多(相同)nInc
结构。 😊
您可能可以通过将 CDateTimeCtrl MyDTC;
///...
DATETIMEPICKERINFO dtInfo{};
MyDTC.GetDateTimePickerInfo(&dtInfo);
UDACCEL AccelList[1] = { {UINT_MAX, 1} };
::SendMessage(dtInfo.hwndUD, UDM_SETACCEL, 1, reinterpret_cast<LPARAM>(AccelList));
作为UINT_MAX
参数传递给UDACCEL
函数(对于'lParam为0
)来完全禁用加速,但这不是文档功能。 (不过值得一试吗?)