【问题标题】:How to disable pasting words into a number-only edit control?如何禁用将单词粘贴到仅限数字的编辑控件中?
【发布时间】:2012-11-17 15:44:59
【问题描述】:

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

【问题讨论】:

    标签: c winapi dialog notepad editcontrol


    【解决方案1】:

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

    OpenClipboard
    GetClipboardData
    GlobalLock
    

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

    GlobalUnlock
    CloseClipboard
    

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

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

    【讨论】:

    • 的方法,使用 Windows API。
    【解决方案2】:

    ES_NUMBER 的文档(我猜你正在使用)说:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2010-09-14
      • 1970-01-01
      相关资源
      最近更新 更多