CEdit контролировать максимальную длину? (в характерах он может показать)
какова максимальная длина текстовой строки, содержащейся в элементе управления CEdit в MFC? Я получаю звуковой сигнал при попытке добавить символ после символа 30001 это документировано где-нибудь? Могу ли я отображать более длинные тексты в CEdit? Должен ли я использовать другой элемент управления?
Как говорит Ниже "программист Windows", ограничение длины текста не совпадает, когда пользователь вводит, как когда мы программно устанавливаем текст с помощью SetWindowText. Ограничение для установки текста программно не упоминается нигде. Ограничение lentgth текста по умолчанию для ввода пользователем неверно. (мой пост ниже).
Я предполагаю, что после вызова pEdit->SetLimitText(0) ограничение как для программного, так и для пользовательского ввода длины текста составляет 7ffffffe байт. Я прав?
в vista при вставке текста длиной более 40000 символов в CEdit он перестает отвечать. Не имеет значения, вызывал ли я SetLimitText (100000) ранее.
3 ответов
Я обнаружил, что документация неверна при упоминании размера по умолчанию для однострочного элемента управления CEdit в vista.
Я запустил этот код:
CWnd* pWnd = dlg.GetDlgItem(nItemId);
CEdit *edit = static_cast<CEdit*>(pWnd); //dynamic_cast does not work
if(edit != 0)
{
UINT limit = edit->GetLimitText(); //The current text limit, in bytes, for this CEdit object.
//value returned: 30000 (0x7530)
edit->SetLimitText(0);
limit = edit->GetLimitText();
//value returned: 2147483646 (0x7FFFFFFE)
}
в документации указано:
перед вызовом EM_SETLIMITTEXT ограничение по умолчанию для объема текста a пользователь может ввести в элемент управления редактирования 32 767 символов.
что, видимо, неправильно.
вы можете узнать, что максимум для вашего контроля, позвонив CEdit:: GetLimitText() на свой контроль. Это возвращает максимальный размер данных в байтах. Вы можете изменить максимальный размер, используя CEdit:: SetLimitText()
"(в символах он может отображать)" != "при попытке добавить символ".
"при попытке добавить символ" = = " максимальное количество символов, которые пользователь может ввести" если вы не имеете в виду программную попытку добавить символ.
"0x7FFFFFFE героев" != "0x7FFFFFFE байт" за исключением иногда, факт, который цитируемый текст MSDN иногда понимает.
держу пари, никто не знает ответа на первоначальный вопрос. Но" 0x7ffffffe байт", вероятно, один из много пределов.