我有带文本编辑控件的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()
答案 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,则可选择弹出消息,然后将焦点设置回字段。