MFC 输入表单不接受少于 5 个符号

MFC input form not accept less than 5 symbols

本文关键字:符号 输入 表单 不接受 MFC      更新时间:2023-10-16

我有带有文本编辑控件的MFC对话框表单,允许输入不超过5个符号。但是如何使系统不接受少于5个符号的字符串?

对话框形式:

IMPLEMENT_DYNAMIC(InputDialog, CDialogEx)

InputDialog::InputDialog(CWnd* pParent /*=NULL*/)
    : CDialogEx(InputDialog::IDD, pParent)
    , m_edit(_T(""))
{
}
InputDialog::~InputDialog()
{
}
void InputDialog::DoDataExchange(CDataExchange* pDX)
{

    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT_INPUT, m_edit);
    DDV_MaxChars(pDX, m_edit, 5);
}

BEGIN_MESSAGE_MAP(InputDialog, CDialogEx)
    ON_BN_CLICKED(IDOK, &InputDialog::OnBnClickedOk)
END_MESSAGE_MAP()

Microsoft为 MFC 提供源代码,以便您可以看到他们如何实现DDV_MaxChars。只需复制它并更改条件即可。

void AFXAPI DDV_MinChars(CDataExchange* pDX, CString const& value, int nChars)
{
    // ...
    if (pDX->m_bSaveAndValidate && value.GetLength() < nChars)
    {
        // ...

处理文本字段的 Kill Focus 事件。 在事件的处理程序中获取输入的字符串的长度。 如果小于 5,可以选择弹出一条消息,并将焦点设置回字段。