c++ - 约束编辑控件内容

标签 c++ winapi edit

我已经浏览了MSDN中的所有页面,但仍然没有找到以下答案。

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

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

最佳答案

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

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

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

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

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

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

关于c++ - 约束编辑控件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890155/

相关文章:

c++ - 使用 ReadDirectoryChangesW 时崩溃

c++ - RegSetValueEx 函数写乱码

delphi - opengl 中的多语言 Unicode 渲染

PHP 更新在编辑表单中的下拉列表中选择的内容

edit - 如何修改 Mifare 1K 标签的 block 0/UID(使用 proxmark)

c - 编辑和丰富控件中的 EN_MAXTEXT

c++ - 微软 nmake : Is it possible to define macros from shell command output?

c++ - 循环效率: merging loops

包含所有文件信息的 C++ 文件列表

c++ - 如何在 C++ 中使用 FMOD?