Как бы сделать в RichEdit обработку скрытых гиперссылок из RTF-файла ?

Тема в разделе "WASM.BEGINNERS", создана пользователем f2065, 8 янв 2012.

  1. f2065

    f2065 Eugene

    Публикаций:
    0
    Регистрация:
    18 авг 2010
    Сообщения:
    24
    Адрес:
    Russia,Moscow
    RichEdit v3 (как заведомо существующий в WinXP).
    Загружаю в него RTF-файл.

    Хочу чтобы в окне RichEdit в тексте можно было бы кликать по ссылкам и запускать браузер.
    Общеизвестное решение - ENM_LINK в EM_SETEVENTMASK, EM_AUTOURLDETECT, и обработка сообщения EN_LINK - сделал, работает… Но, со скрытыми ссылками - облом!

    Т.е. в Word при создании RTF-файла я например пишу «aaa», выделяю и создаю гиперссылку на сайт hттp://ya.ru. Сам Word ссылку не показывает, а только подчёркивает «aaa». Т.е. мне именно так и надо, чтобы в тексте на отдельные слова были какие-либо ссылки на инет (ссылки планируются длинные - запросы в гугл или википедию, т.е. просто некрасиво их в текст явно писать).

    Загружаю в RichEdit - и вижу там такое: «aaa <hттp://ya.ru/>»
    Вот как сделать скрытые ссылки в нём ?

    Понятно что логика работы EM_AUTOURLDETECT скрытые ссылки не понимает, оно тупо при чтении данных обрабатывает все слова начинающиеся с hттp://…

    Пока возникает только идея что самому искать фразы по тексту (RTF-текст встроен в мою программу, вывод других текстов не нужен), выделять слова у которых должны быть скрытые ссылки и отправлять им EM_SETCHARFORMAT CHARFORMAT2.dwEffects CFM_LINK… Но это решение выглядит как-то громоздко и неадекватно…


    И ещё вопрос - Word в RTF пишет немерянное кол-во мусора. Например зачем-то перечисляет шрифты которые есть на компе, но не использованы в файле. Это не мешает работе RichEdit, но заметно увеличивает размеры файла. Вот просто пустой RTF создаю - 30кб. Всталяю в него простой текст 5кб без всякой разметки и форматирования - RTF 80кб. Попробовал AbiWord - RTF более компактный, но там проблемы с картинками (если я их вставлю) - от MSWord в RichEdit картинки показываются, а от AbiWord нет.

    Есть ли утилиты для фильтрации RTF от лишнего мусора ?