2

I've scanned through all pages in MSDN, but still not found asnwers of following.

  1. Minimum Character Length of edit control.
  2. Specifying range for input values in edit control.
  3. Permitting only alphabets in edit control.
  4. Setting tooltip for button control.

Please tell me how to do this in Win32.

4

1 回答 1

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

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

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

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

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

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

于 2013-02-16T07:03:04.713 回答