c++ - CDateTimeCtrl - 设置日期时防止 'focus' 更改

标签 c++ mfc controls

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

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

我非常想阻止这种焦点转移的发生。有可能吗?

最佳答案

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

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

关于c++ - CDateTimeCtrl - 设置日期时防止 'focus' 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699102/

相关文章:

c# - 找不到名为的入口点

c++ - 没有匹配的调用函数,使用函数指针

mfc - MFC中的消息循环

c++ - CClientDC 和 CWnd::GetDC 有什么区别

c++ - #include "MyClass.h"和 #include ".\myclass.h"有什么区别

c# - 使用文本文件保存和加载 TextBox 或其他控件值

c# - 在 WPF 中访问 XAML 控件

delphi - Delphi自定义控件: A TRichEdit with a TLabel Above It

c++ - 生成缓冲区时出现 OpenGL 段错误

java - 文件格式规范中的空终止字符短语