CRichEditCtrl::LimitText - проблемы с новыми строками
У меня есть текстовое поле БД, размер 500, связанный с диалоговым полем MFC с помощью CRichEditCtrl
, Я звоню CRichEditCtrl::LimitText(500)
таким образом, вы не можете ввести больше текста, чем может обработать БД, и это прекрасно работает, пока вы не введете новые строки. Каждая новая строка увеличивает длину строки на 2, но считается только как 1 по отношению к пределу 500... например, если я заполнил элемент управления редактирования до предела и получу 4 новые строки, CString
имеет длину 504.
Я специально хочу, чтобы элемент управления позволял пользователю только вводить текст до предела в 500 символов, а не обрезать то, что он вводит. Как я могу лучше всего достичь этого? Обратите внимание, мне нужно сохранить содержимое CString
как есть, без замены \r\n
с \n
в БД или что-то в этом роде.
1 ответ
Затирать OnChar
, посчитайте количество новых строк в тексте и затем установите ctrl.LimitText(500 - count)
, Таким образом, вы не будете нарушать лимит БД 500 символов.
Вы также должны следить за событиями вставки, которые могут нарушить предел, как описано здесь: Как CRichEditCtrl узнает, что была выполнена операция вставки?