Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизRichEdit Найти похожие ветки
← →
DimaK (2003-12-19 23:05) [0]Привет уважаемые знатоки.
Сталкнулся с такой проблемой, написал программу, что-то вроде терминала, но специально для коммутатора сотовой связи. Все нормально работает, в качестве терминального окна использую RichEdit и вот недавно заметил, что иногда прога выдает ошибку что-то типа "Out of Resurse" как правильно не помню, но смысл такой. Начал выяснять и наткнулся на такую вещь, делаю запись в файл и выясняю, что вылетает когда в RichEdit объем текста или 32кб. или 64кб. Причем 32кб. может иногда и проскочить, а вот при 64кб. уже падает постоянно. Получается у RichEdit есть придел на размер текста?
← →
just me (2003-12-20 16:55) [1]Если ты не задаешь лимит вводимого текста посылкой сообщения EM_EXLIMITTEXT, то по умолчанию этот лимит равен действительно 32,767 (MSDN\Platform SDK\Windows User Interface\Controls\RichEdit)
← →
DimaK (2003-12-20 18:01) [2]Я это уже где-то вычитал, вроде в Delphi World.
Вот только дает ошибку при компилировании именно на EM_EXLIMITTEXT (Undeclared identifier: "EM_EXLIMITTEXT"), если пишу RichEdit1.Perform(EM_LIMITTEXT, 5129, 0) то компилируется нормально, но как я понял, что используя EM_LIMITTEXT необходимо повторять перед каждым открытии файла, а как правильно использовать EM_EXLIMITTEXT?
← →
just me (2003-12-20 18:32) [3]Цитата из MSDN:
The EM_EXLIMITTEXT message sets an upper limit to the amount of text the user can type or paste into a rich edit control.
To send this message, call the SendMessage function with the following parameters.
SendMessage(
(HWND) hWnd, // handle to destination window
EM_EXLIMITTEXT, // message to send
(WPARAM) wParam, // not used; must be zero
(LPARAM) lParam // text limit
);
Parameters
wParam
This parameter is not used; it must be zero.
lParam
Specifies the maximum amount of text that can be entered. If this parameter is zero, the default maximum is used, which is 64K characters. A COM object counts as a single character.
Так что писать надо RichEdit1.Perform(EM_LIMITTEXT, 0, 5129), а не RichEdit1.Perform(EM_LIMITTEXT, 5129, 0)
А посылать надо сообщение всего 1 раз после создания окна
← →
DimaK (2003-12-20 21:17) [4]Спасибо! Вроде заработало, покрайней мере без проблем выдержало текст в 2.5Mb.
Кстати что такое MSDN? Просто все на него ссылаются, а где его можно взять, а то тыкаюсь как слепой катенок :)
← →
BorH (2003-12-21 01:31) [5]MSDN - база данных Мелкомягких для разработчиков типа тебя. Если пишешь прогу на API - вещь незаменимая.
http://msdn.microsoft.com/
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c