我有一个DB文本字段,大小为500,使用CRichEditCtrl
链接到MFC对话框字段。我打电话给CRichEditCtrl::LimitText(500)
,因此您无法输入比数据库可以处理的文本更多的文本,这可以正常工作,直到您输入新行。每个换行符将字符串的长度增加2,但仅朝500限制计为1 ...例如如果我将编辑控件填充到限制并且有4个换行符,则CString
的长度为504。
我特别希望控件只允许用户输入最多500个char限制的文本,而不是截断他们输入的内容。我怎样才能做到最好?请注意,我需要按原样保存CString
的内容,不要在数据库中替换\r\n
\n
或类似的内容。
答案 0 :(得分:1)
覆盖OnChar
,计算文本中新行的数量,然后设置ctrl.LimitText(500 - count)
。这样就可以避免破坏DB 500的限制。
您还必须注意可能违反限制的粘贴事件,如下所述:How does a CRichEditCtrl know a paste operation has been performed?