Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-12195
MaG
2003-11-04 20:08
2004.01.05
.............помощь в создании


3-11789
Апач
2003-12-09 13:25
2004.01.05
Как IBTable взять запись на редактирование


1-11984
Киса
2003-12-19 11:14
2004.01.05
CreateMessageDialog


3-11827
karburator
2003-12-08 10:37
2004.01.05
В SQL-таблице выводить поле в денежном формате


14-12084
BlackKing
2003-12-15 15:09
2004.01.05
По какому адресу хранится время в DOS?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский