#c #winapi #richedit
#c #winapi #richedit
Вопрос:
Элемент управления должен иметь возможность отображать текст в несколько строк, отвечать на клики по URL-адресам или тегам @user и т.д., Которые должны иметь другой цвет, чтобы выделяться.
Первым очевидным выбором был элемент управления richedit, но с этим я столкнулся со многими проблемами. Во-первых, я бы хотел, чтобы текст был невыбираемым, а ввод был отключен. Последнее просто, но единственный способ, который я нашел, чтобы запретить выделение текста, — это отключить элемент управления. В этом случае я не могу понять, как изменить цвет фона с серого по умолчанию на белый. Кроме того, все функциональные возможности интерактивных ссылок, которые я получаю бесплатно от richedit, перестают работать, когда элемент управления отключен.
Какие, по вашему мнению, у меня есть варианты? Я очень осторожно отношусь к попыткам использовать TextOut для создания собственного элемента управления. Это может заставить меня хотеть плакать.
РЕДАКТИРОВАТЬ: До сих пор я не рассматривал возможность разрешить пользователю выбирать текст в качестве опции, поэтому режим только для чтения не казался полезным. Я просто спланировал это в своей голове таким образом. Я определенно хочу, чтобы там не было мигающего курсора, поэтому я покопался и обнаружил, что я могу вызвать HideCaret в WM_SETFOCUS из richedit (путем его подкласса) и вернуть 0. Это навсегда избавило меня от курсора. По иронии судьбы, это также избавило от возможности выбирать что-либо с помощью мыши, что почти в точности соответствует поведению, на которое я надеялся в первую очередь. Хотя я не знаю, полностью ли я против запрета выбора. Я вернусь к этому. Теперь все, что осталось, это выяснить, могу ли я переопределить поведение изображения курсора, изменяющегося при наведении курсора на текст.
Ответ №1:
Вы могли бы использовать элемент управления Webbrowser и просто создать HTML, который отображает то, что вы хотите.
Комментарии:
1. Я надеялся избежать добавления зависимости от Internet Explorer, но я определенно буду иметь это в виду. Спасибо.
Ответ №2:
Я бы не хотел, чтобы опция с отключенным элементом управления была отключена, почему бы не предоставить мне доступ для выбора части текста для копирования.
В любом случае, вы можете установить цвет, близкий к белому FEFEFE
, и он должен работать, только не чисто белый.
Разве элемент управления RichEdit не имеет режима «только для чтения», который остановит ввод, но позволит выделять текст и нажимать на ссылки.
Комментарии:
1. Ваш комментарий заставил меня попробовать пару вещей. Я внес правку в свой первоначальный пост, потому что он был слишком длинным, чтобы писать здесь. Спасибо!