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 байт", вероятно, один из много пределов.