| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Проблема при использовании WM_GETTEXT c RichEdit |
| Автор: guranvir 7.6.2010, 21:15 | ||
| Требуется получить текст из контрола следующего класса(имеется в виду оконный класс в смысле WinAPI) TInfuRichViewEdit.UnicodeClass Однако в описании этого сообщении стоит что unicode не поддерживается. Однако все же пошарив по инету убедился что народ как то решает сию проблему, а вот как непонятно. Проблема в том, что у меня не выводится текст из контрола, а появляется одиночный символ, который никак не связан с текстом в контроле.Как справится с проблемой? вот код, который у меня есть: Код:
S объявлена как s:array[0..256] of WideChar; |
| Автор: dvamaster 8.6.2010, 12:18 |
| Именно про этот компонет TInfuRichViewEdit не скажу, но можно попробовать SendMessageW |
| Автор: guranvir 8.6.2010, 12:29 |
| Не помогает к сожалению( |
| Автор: dvamaster 8.6.2010, 13:12 |
| Посмотри исходный код класса TRichEditStrings он находиться в ComCtrls. Добавлено через 1 минуту и 1 секунду у меня матерится на WM_GETTEXT, этот контрол его не понимает |
| Автор: guranvir 8.6.2010, 13:23 |
| Кстати по ходу исследований интересней факт появился: добавил строку r:=SendMessage(h,WM_GETTEXTLENGTH,0,0); И она выдает в переменную r значение 0. Однако в MSDN сказано Замечания Для элементов редактирования, текст, который будет скопирован - содержание элементов редактирования. Для комбинированного блока, текст - содержание элементов редактирования (или статический текст) часть комбинированного блока. Для кнопки, текст - имя кнопки. Для других окон, текст - заголовок окна. Чтобы определять длину элемента в окне списка, прикладная программа может использовать сообщение LB_GETTEXTLEN. При известных условиях, функция DefWindowProc возвращает значение, которое является большим, чем фактическая длина текста. Это происходит с некоторыми смесями ANSI и Уникода, и из-за операционной системы, которая учитывает возможное существование символов DBCS внутри текста. Возвращаемое значение, однако, будет всегда, по крайней мере, такого размера, как факти-ческая длина текста; Вы можете, таким образом, всегда использовать его, чтобы определить распре-деление в буфере. Это поведение может случаться тогда, когда прикладная программа использует и функции ANSI и общие диалоги, которые используют Уникод. LB_GETTEXT, или CB_GETLBTEXT, или функцию GetWindowText. //////////////////////////////////////////////////////////////////////////////////// Содержимое точно есть, остается предположить то реакция на сообщение переопределлена |
| Автор: guranvir 8.6.2010, 14:37 |
| И все бы хорошо но прога чужая и исходнички закрыты )) |
| Автор: dvamaster 9.6.2010, 05:15 | ||
Тогда просто по хенделу использовать
|
| Автор: guranvir 11.6.2010, 13:46 | ||
Извините а можете пояснить зачем эта строчка
|
| Автор: dvamaster 21.6.2010, 12:22 | ||
формат строки в делфи
|