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

时间:2014-04-04 09:31:28

标签: c++ visual-c++ mfc

我有带文本编辑控件的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()

2 个答案:

答案 0 :(得分:4)

Microsoft向MFC提供源代码,以便您了解它们如何实现DDV_MaxChars。只需复制它并改变条件。

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

答案 1 :(得分:0)

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