Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > C/C++: Системное программирование и WinAPI > Какие сообщения и у кого ловить, когда в Edit выделяется текст? |
Автор: Артур 08.04.19, 07:15 |
Я так понимаю, что при выделении текста Едит шлёт чего-то родителю... Или не так? И как получить координаты полученного выделенного фрагмента? |
Автор: Олег М 08.04.19, 07:45 |
RichEdit посылает WM_NOTIFY с EN_SELCHANGE, простой Edit вроде ничего не отправляет При помощи сообщения EM_GETSEL, либо CEdit::GetSel |
Автор: Артур 08.04.19, 11:20 |
Олег МСпасибо Да, WM_NOTIFY не приходит. то есть, момент селекта не поймать? С положением селекта в тексте понятно, но мне бы получить все ректы выделенного текста. |
Автор: B.V. 08.04.19, 13:13 |
Ну отчего ж не поймать. Приходят вполне конкретные мышиные и клавиатурные сообщения. Я бы ещё посмотрел сообщения о перерисовке. Что до опыта реализации подобной задачи, делал когда-то через полсекундный таймер с проверкой выделения. |
Автор: Артур 09.04.19, 07:52 |
B.V. Не, если штатными средствами нельзя, то не надо. Как найти верхний угол селекта, нашел - EM_POSFROMCHAR Можно ли штатно получить ректы выделенной области, и если нельзя, то из чего эту информацию собрать? Скажем, у нас не Едит, а РичЕдит. Как получить ширину строки, при условии, что в ней может быть разное форматирование? И совпадает ли вообще ширина селекта с шириной строки? |
Автор: Олег М 09.04.19, 10:06 |
Цитата Артур @ Скажем, у нас не Едит, а РичЕдит. Как получить ширину строки, при условии, что в ней может быть разное форматирование? Находишь индексы символов в начале/конце строки при помощи EM_LINEFROMCHAR, EM_LINEINDEX, EM_LINELENGTH и т.д., потом вызываешь для них EM_POSFROMCHAR |
Автор: Артур 11.04.19, 19:01 |
Спасибо |