CDateTimeCtrl - 在设置日期时防止“焦点”更改

时间:2010-04-23 13:55:46

标签: c++ mfc controls

我想使用CDateTimeCtrl来允许用户选择非周末日期。因此,如果用户增加一天(通过按键) - 并且发现结果日落在周末 - 那么控件应该跳到下一个星期一(不要让关于月份变化的问题分散你的注意力,这不是有关)。

通常这不是问题:当我处理DTN_DATETIMECHANGE通知时,我可以检查新的日期/时间,如果发现它是周末,那么我可以在控件上调用SetTime来更新日期。 但是,如果我将样式设置为DTS_SHOWNONE,则此SetTime调用会导致控件将输入“焦点”(松散使用的术语)移至“无”复选框,例如远离白天的田野。这可以防止用户使用键盘输入继续递增日期,除非他们随后使用右箭头键重置'焦点',这只是讨厌。

我非常希望防止这种焦点转移发生。它甚至可能吗?

1 个答案:

答案 0 :(得分:2)

不确定,但有一种可行的解决方法:

keybd_event(VK_RIGHT, 0, 0, NULL);
keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, NULL);