![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Ksander1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.8.2009 Репутация: нет Всего: нет |
Скажите пожалуйста - правильно ли получение текста через GetWindowText из RichEdit, и если да, то можно ли заменить на выходе отступы ввиде двух пуcтых символов ( str[5] == '' str[6] == '' так выглядит отступ
Это сообщение отредактировал(а) Ksander1000 - 5.9.2010, 10:38 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, правильно, но RichEdit еще позволяет получить текст в разных форматах через EM_STREAMOUT
я так и не понял что тут требуется -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Ksander1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.8.2009 Репутация: нет Всего: нет |
Ну например в RichEdit поле имеються:
ggg (перенос на слудующию строку) ggg и если получить текст из этого поля с этими словами, то вместо ожидаемого отступа '\n' [0] 103 'g' char [1] 103 'g' char [2] 103 'g' char [3] 13 '' char [4] 10 '' char [5] 103 'g' char [6] 103 'g' char [7] 103 'g' char Можно ли сразу получить \n ? Это сообщение отредактировал(а) Ksander1000 - 1.9.2010, 13:30 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, теперь понятно
можно использовать EM_GETTEXTEX, там за эти 2 символа CR и LF отвечает флаг GT_USECRLF, т.е. если его не будет указано то, перевод строки, по идее должен быть одним символом -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Ksander1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.8.2009 Репутация: нет Всего: нет |
Спасибо
Пожалуйста раскажите ещё о структуре GETTEXTEX: получаеться cb - это размер принимаемого текста? codepage - кодировка исходного текста? lpDefaultChar, lpUsedDefChar вобще что-то не понял )) |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, именно размер (не число символов) верно в MSDN все написано, так что просто перевожу: lpDefaultChar - это спец символ (в кодировке ANSI), который будет подставляться всякий раз, когда в тексте встретится "неопознанный" для выбранной (не юникод) кодировки символ, lpUsedDefChar - это указатель на булеву переменную, которая после вызова функции будет хранить признак того, что такой символ хоть раз да встретился в тексте -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Ksander1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.8.2009 Репутация: нет Всего: нет |
Большое спасибо
Только как узнать размер текста, ведь вроде GetWindowTextLength возвращает длинну... Можно неольшой пример получения текста из richedit? Это сообщение отредактировал(а) Ksander1000 - 1.9.2010, 16:51 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Насколько я понимаю, это размер буфера, который ты выделяешь сам и передаешь в lParam. Выделяй с запасом.
-------------------- ... |
|||
|
||||
| GremlinProg |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
я покажу часть враппера для RichEdit'а, это 4 простых метода класса-обертки:
Добавлено через 2 минуты и 2 секунды используемые макросы для трансляции кодировки:
Добавлено через 12 минут и 17 секунд использовать - как обычный враппер, назовем, к примеру этот класс-обертку CRichEditWrapper, тогда получить текст можно так:
hwnd - дескриптор richedit'а -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||
|
|||||||
| Ksander1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.8.2009 Репутация: нет Всего: нет |
GremlinProg спасибо, часть врайпера мне много показала
Пожалуйста скажите что здесь неправильно:
В *buf что-то вроде этого '棋ꆵᕩĀ○○' Кодировка юникод ________________________________________________________________________ Кажеться нашёл причину, FindWindowEx не находит главное окно приложения (unused = CXX0030: ошибка: невозможно вычислить выражение), хотя всё указанно правильно ________________________________________________________________________ Сейчас запустил несколько раз для теста с остановка программы после поиска описателей окон (при этом код не менял), и 2 раза функция нашла описатель, но после этого GetDlgItem не мог найти описатель с той же ошибкой... Это сообщение отредактировал(а) Ksander1000 - 2.9.2010, 15:44 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
FindWindowEx может и не находит какое-то окно, но он тут видимо ни при чем
если не хочешь использовать STL ( это все, что начинается с std:: ), то попробуй для начала разобраться в этих вопросах: 1. суть строки в С/С++ 2. дескриптора в WinAPI 3. памяти как таковой ( + работа с указателями ) третий пункт - ключевой а чтобы немного отложить час расплаты, можно пока просто поправить вызов:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Ksander1000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.8.2009 Репутация: нет Всего: нет |
Спасибо, текст получаю из edit поля, наверное FindWindowEx так и должна работать
Только осталось одно - за место отступов остаються пустые индексы масива (теперь только 1 на 1 отступ __________________________________________________________________________ Всё понял, это были '\r' Это сообщение отредактировал(а) Ksander1000 - 5.9.2010, 04:26 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |