CRichEditCtrl 设置字符长度

    在CRichEditCtrl中设置字符的长度一般用LimitText,但我用了这个好感觉不太好,它没有区分字符和汉字汉字长度是字符的2倍(SetLimitText是可以的)。虽然MSDN里说的

Specifies the length (in bytes) of the text that the user can enter. If this parameter is 0 (the default value), the text length is set to 64K bytes.

但实际上好像不是这样的,输入的汉字和字符一样多。对此,我不的不自己判断。下面给出代码,可以可以帮到人。如果是我说了,可以区分的,请告诉我,谢谢。

 

ON_EN_CHANGE(IDC_RICHSEND, OnChangeRicheditSend)

 

 //添加CRichEditCtrl的ENM_CHANGE事件  2010/1/31 ADD
 long lMask = m_richSend.GetEventMask();
 lMask |= ENM_CHANGE;
 lMask &= ~ENM_PROTECTED;
 m_richSend.SetEventMask(lMask);
 // 2010/1/31 END

 

消息响应

void CDlgTalkViewer::OnChangeRicheditSend()
{
 CString str;
 GetDlgItemText(IDC_RICHSEND,str ); 
 //判断输入的长度,超出400截取前400
 if ( str.GetLength() > 400 )
 {
  char ch[401];
  ZeroMemory(ch,401);
  strncpy(ch, str, 400 );  //截取前400
  SetDlgItemText(IDC_RICHSEND, ch );  
  m_richSend.SetSel(400,400);  //光标移到最后
  int linecout = m_richSend.GetLineCount();  //活动总行数
  //调整显示的位置,保证最后一行在最后一行显示--注意5是我们控件可以显示的行数
  m_richSend.LineScroll(linecout-5);  
 }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值