【问题标题】:MFC CEdit Ctrl QuestionMFC CEdit Ctrl 问题
【发布时间】:2009-08-06 02:20:35
【问题描述】:

我有一个 CEdit 控件,我希望能够从中花时间输入。现在我希望这个输入以 hh:mm:ss 的形式出现。目前我正在使用单独的 CEdit 控件来控制小时、分钟和秒。我知道我可以要求用户输入冒号来分隔小时、分钟、秒,但我相信这会让我的用户感到困惑。

我实际上希望我的控件显示冒号,并将控件的不同部分设置为制表位,以便用户清楚他们输入的确切时间。我知道我在其他地方看到过这个,我只是不知道自己该怎么做。

理想情况下,这些将作为 3 个单独的字符串出现,因为我没有使用纪元时间或任何其他类型的系统时间,而是使用我自己的时间计数。 (即文件中有多少数据样本。)意思是每次,我的时钟从零开始,然后从那里开始计数。

谢谢

丹

【问题讨论】:

  • 您需要制表符或冒号移动到下一个字段。也可能在他们开始输入第三位数时。

标签: c++ mfc cedit


【解决方案1】:

重新格式化文本很简单,虽然我会等到失去焦点消息而不是在用户键入时插入冒号,但它会让人感到困惑,尤其是当他们需要编辑或删除字符时。

您可以通过获取 VK_TAB 在字段内实现制表位,但我不确定我是否会这样做 - 用户习惯于制表符跳转到下一个控件而不是控件中的位置。

另一种方法是使用 3 个单独的控件,但会检测用户何时输入了足够的第一个字符,或者输入了一个制表符(或冒号),然后自动将焦点切换到下一个。我认为这更简洁,这就是 IP_ADDRESS 控件的作用。

【讨论】:

  • 这就是我认为我必须做的,现在如果我只能让它成为像 IP_ADDRESS 控件这样的字段之间的所有空格。
【解决方案2】:

您必须处理每个 WM_CHAR(或 WM_KEYUP,视情况而定)并在用户键入时重新格式化编辑框中的文本。处理 VK_TAB 的消息并根据需要设置选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2011-09-06
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2018-04-08
    相关资源
    最近更新 更多