Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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
Спасибо :)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)