约束编辑控件内容

nul*_*ull 2 c++ winapi edit

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

  1. 编辑控件的最小字符长度.
  2. 在编辑控件中指定输入值的范围.
  3. 在编辑控件中仅允许使用字母表.
  4. 设置按钮控制的工具提示.

请告诉我如何在Win32中执行此操作.

jam*_*lin 5

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

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

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

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

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

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