C/C++

Как вставить текст форматированный в RichEdit

Как вставить текст форматированный в RichEdit

Копирую с браузера не вставляется форматным.
Копирую с Worda вставляется форматным.

Значит невозможно ?.
А хотя нет возможно я думаю раз в Word его понимает с браузера.

скопировать в поток возможно но не знаю что да как.

В общем нужно с Браузера форматный текст скопировать в RichEdit.
Вам надо разобраться с технологией работы буфера обмена в Windows.
Под руками сейчас средств разработки под Windows нет, подкину инфу к размышлению и куда копать.

На пальцах - когда в буфер копируется информация - она передает идентификатор типа передаваемого формата вместе с данными. Когда Вы хотите вставить данные - программаы должны подобрать в каком формате можно передать-получить данные и соотв. вставить.

Скорее всего ситуация такая, что при копировании со страницы в буфер помещается CF_HTML, который напрямую не понимает RichEdit.
Список стандартных форматов-констант.
https://docs.microsoft.com/en-us/windows/win32/dataxchg/standard-clipboard-formats
О CF_HTML
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa767917(v=vs.85 )?redirectedfrom=MSDN

Но когда Вы перекопируете через Word - один из предлагаемых форматов вставки вероятно CF_ RTF - поэтому он легко вставляется в RichEdit с форматированием.
https://docs.microsoft.com/en-us/cpp/mfc/clipboard-operations-in-rich-edit-controls?view=msvc-160&viewFallbackFrom=vs-2019

Что делать? Посмотрите прав ли я. Функции
RegisterClipboardFormat (регистрация формата для обработки)
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerclipboardformatw
EnumClipboardFormat (список доступных форматов в буфере обмена)
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-enumclipboardformats
Дальше при вставке Вам _возможно_ надо будет самому переконвертировать HTML текст в RTF.
В простых случаях и тегах ситуация решаема. Возможно стоит поискать готовую библиотеку. Можно ещё попробовать использовать встроенный TWebBrowser задать текст и скопировать (даже старого IE хватит разобрать основные теги форматирования). Но это плохой путь.

PS: ещё хинт - можно воспользоваться менеджерами буферов обмена и посмотреть какие форматы появляются при копировании из браузера и копировании из Word.
Зуфар Хайдаров
Зуфар Хайдаров
84 764
Лучший ответ
Равиль Салманов Эх сразу видно что средний программист )
Равиль Салманов шучу, сразу видно что голова варит и возможно что крутой программист.
Равиль Салманов Про буфер обмена я натыкался, но не догнал всего.
И забил.
Для человека бесплатно авторедактор объявлений делаю.
так 1 2 функций сделал.

Обработку файла html не рискнул делать побоялся.
А CF_HTML не знал.
Но понял что функция какая то в ворде есть.

Спасибо за ответ посмотрю.
Руками