0

我正在用 C WinAPI 编写记事本的“转到行”对话框。我创建了一个仅限数字的编辑控件。但我仍然可以将文字粘贴到编辑控件中!Windows 记事本中的对话框确实会停止这种粘贴。那么我怎样才能在记事本中做同样的事情呢?

4

2 回答 2

2

子类化编辑控件,并在收到 WM_PASTE 时:

OpenClipboard
GetClipboardData
GlobalLock

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

GlobalUnlock
CloseClipboard

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

如果都是数字,则GlobalUnlockandCLoseClipboard并传递消息CallWindowProc以允许粘贴。

于 2012-11-17T17:04:38.277 回答
0

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

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

为防止粘贴非数字,您需要扫描剪贴板中的数据,并在其中包含非数字时阻止粘贴。

于 2012-11-17T16:43:27.623 回答