2013-02-15 143 views
2

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

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

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

回答

5
  1. 这很难做得很好。一个天真的方法将处理WM_KEYDOWN消息来拦截退格键和删除键(VK_BACKVK_DELETE)。但是,您还需要处理用户选择一些现有文本,然后删除它(通过退格或删除),剪切或替换(通过键入一个键或粘贴其他文本)。我不认为这是值得的,即使你能做到这一点,当你打破所有这些正常行为时,很可能会产生混淆。 (这也可能是非常令人讨厌的,假设你在控件中有一些文本“栏”,但是你想把它改成“baz”,如果控件执行的最小长度为3,那么试图回退最后一个字符如果你的控件需要一个最小长度,你最好在执行期间强制执行它,如果你的控件需要一个最小长度,那么你最好在执行期间执行它。一个单独的验证步骤(例如用户单击确定按钮或将焦点移至另一个控件时)并显示相应的错误消息。

  2. 我不确定您的意思是只允许将某些字符输入到编辑控件中,还是要将其限制为一个数值范围。对于前者,请参阅3.

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

  3. 您将不得不继承编辑控件,处理WM_CHAR消息,并拒绝不需要的字符。您还需要处理WM_PASTE消息并执行类似的验证。

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