如何禁用将单词粘贴到仅限数字的编辑控件中?

时间:2012-11-17 15:45:00

标签: c winapi dialog notepad editcontrol

我正在使用C WinAPI编写一篇' Go To Line'记事本的对话框。我创建了一个仅限编辑控件。但我仍然可以将文字粘贴到编辑控件中! Windows记事本中的对话框确实阻止了这种粘贴。那么我怎么能在记事本中做同样的事情呢?

2 个答案:

答案 0 :(得分:2)

编辑控件的子类,当收到WM_PASTE时:

OpenClipboard
GetClipboardData
GlobalLock

现在使用GlobalLock返回的指针检查非数字字符。如果找到非编号,则通知用户:

GlobalUnlock
CloseClipboard

并从回调中返回0以防止将数据粘贴到编辑控件中。

如果是全部数字,则GlobalUnlockCLoseClipboard并使用CallWindowProc传递消息以允许粘贴。

答案 1 :(得分:0)

ES_NUMBER的文档(我认为你正在使用它)说:

  

仅允许在编辑控件中输入数字。请注意,即使使用此设置,仍可以将非数字粘贴到编辑控件中。

为防止粘贴非数字,您需要扫描剪贴板中的数据并防止粘贴(如果包含非数字)。