约束编辑控件内容

时间:2013-02-15 07:40:10

标签: c++ winapi edit

我已经扫描了MSDN中的所有页面,但仍未找到以下内容。

  1. 编辑控件的最小字符长度。
  2. 在编辑控件中指定输入值的范围。
  3. 在编辑控件中仅允许使用字母。
  4. 设置按钮控制的工具提示。
  5. 请告诉我如何在Win32中执行此操作。

1 个答案:

答案 0 :(得分:5)

  1. 这很难做到。一种天真的方法可以处理WM_KEYDOWN消息来拦截退格键并删除键(VK_BACKVK_DELETE)。但是,您还需要处理用户选择一些现有文本然后将其删除(通过退格或删除),剪切或替换它(通过键入键或粘贴其他文本)。我不认为这是值得的,即使你能做得好,当你打破所有这些正常行为时,它可能会让人感到困惑。 (它也可能令人难以置信的烦恼。想象一下,你在控件中有一些文本“bar”但是你想把它改成“baz”。如果控件强制执行最小长度为3,那么试图在最后一个角色上退格工作。你必须先将它改为“barz”,然后才能删除“r”字符。呃。)

    如果您的控件需要最小长度,最好在单独的验证步骤中执行它(例如当用户单击“确定”按钮或将焦点移动到另一个控件时)并显示相应的错误消息。

  2. 我不确定您是否只允许将某些字符输入编辑控件,或者是否要将其限制为一系列数值。对于前者,见3。

    如果您想将值限制在某个数值范围内,我再次建议您在单独的验证步骤中执行此操作。否则,您可能再次阻止用户以正常方式插入和删除字符。如果可以,请避免使用编辑控件并使用轨迹栏(滑块)控件。

  3. 您必须继承Edit控件,处理WM_CHAR消息,并拒绝您不想要的字符。您还需要处理WM_PASTE消息并执行类似的验证。

  4. 这与编辑控件没有任何关系,可能应该是一个单独的问题。你有什么尝试?你看过http://msdn.microsoft.com/en-us/library/bb760250.aspx吗?