CRichEdit编辑框限定输入字数DDV_MaxChars和LimitText的区别,VS2012的bug

导读:

默认读者比较熟悉MFC的框架

知道MFC数据绑定的原理

熟练使用MFC类向导

知道多字节和Unicode的区别

知道字节和字符的区别

1、DDV_MaxChars

可以通过菜单“项目”-》“类向导”(Ctrl + Shitf + X)添加控件变量的时候,设定最大支持的字符数

 

void CTestLimitDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_RICHEDIT21, m_RichEdit);
    DDX_Text(pDX, IDC_RICHEDIT21, m_strEdit);
	DDV_MaxChars(pDX, m_strEdit, 18);
}

 

 输入18个数字时,就限制不让输入

输入18个中文时,就限制不让输入

 

 

void CTestLimitDlg::OnBnClickedButton2()
{
    if (!UpdateData())
    {
        return;
    }
    CString str = m_strEdit;
}

这里UpdateData会调用 DoDataExchange函数,对数据进行检查,如果超过18个字节(笔者认为这个是MFC的bug,应该是18个字符才对),MFC会报错,UpdateData返回FALSE

 

 一个中文相当于2个字节,8 * 2 + 3 = 19个字节

2、LimitText 

 LimitText仅仅是限定输入字符个数,不做检查

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值