MFC CEdit Ctrl问题

时间:2009-08-04 22:38:16

标签: c++ mfc cedit

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

我实际上希望我的控件显示冒号,并且控件的不同部分是制表位,这样用户可以清楚地知道他们究竟进入的时间。我知道我已经在其他地方看到了这一点,我自己也不知道怎么做。

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

由于

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我知道这篇文章并没有让你满意,但我认为开发人员已经实现了你所要求的大部分内容:

http://www.codeproject.com/KB/edit/datetimedit.aspx