MFC:可以在CDateTimeCtrl中更改旋转的加速度吗?

问题描述 投票:1回答:1

[我正在使用VS-2015,我正尝试扩展CDateTimeCtrl以检测它何时超过59',相应地更改小时数。

现在的问题是,当我按住箭头增加或减少时,它会加速,并且我无法再检查它是否从59更改为00,反之亦然,因为增加或减少超过1',您就可以从50开始到10。

我知道CEdit + CSpinButtonCtrl,但是我想知道是否可以仅将加速度更改为一分钟一分钟。

谢谢,抱歉我的英语。不是我的母语。

visual-studio-2015 datepicker mfc
1个回答
0
投票

您可以使用类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)来完全禁用加速,但这不是文档功能。 (不过值得一试吗?)

© www.soinside.com 2019 - 2024. All rights reserved.