Вставка форматированного текста в RichTextBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Вставка форматированного текста в RichTextBox

Сообщение Sun07 » 04.08.2006 (Пт) 21:39

Подскажите, плиз, почему при вставке форматированного текста по Ctrl+C, Ctrl+V из HTML страницы в RichTextBox в нём отображается строка "ОбычныйТерминСписокопределенийАдресЦитатыФорматированный"? Мне надо всего лишь получить только текст, благо мне надо отобразить текст по текущим установкам ричбокса.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.08.2006 (Пт) 22:06

Это хороший вопрос.

У меня этот текст появляется при вставке в поле ввода аськи.

Эффект зависит от винды, как я понял. Избавиться пока не смог. И если копирую из IE в аську, то делаю это через блокнот.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 04.08.2006 (Пт) 22:23

Это очень хороший вопрос :)

Как меня достал текст "конецформыначалоформы".
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 05.08.2006 (Сб) 0:22

А мну говорили что это все из-за ИЕ. :(
Пора уже всем хорошим людям собраться и убить всех плохих людей.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 05.08.2006 (Сб) 0:42

А мну говорили что это все из-за ИЕ.

У меня Mozilla тоже такое порой выдаёт
#define ROFL 0xDDDD

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 05.08.2006 (Сб) 21:08

'код исправляет проблему с вставкой строки в RichTextBox из Internet Explorer
' "ОбычныйТерминСписокопределенийАдресЦитатыФорматированныйконецформыначалоформы"
'код не работает, если скопировать текст и картинки сразу из Internet Explorer
'форматирование вставляемого текста сохраняется

Public flagCut As Byte
Public LenInputMsg As Long
Public SaveSelStartBeg As Long, SaveSelStartEnd As Long, SaveSelRTF As Long

Private Sub rtbInput_SelChange()
If flagCut = 1 Then GoTo 10
SaveSelStartBeg = SaveSelStartEnd
SaveSelStartEnd = rtbInput.SelStart
10
End Sub

Private Sub rtbInput_Change()

'*** отброс строки sCut при вставке копии текста из Internet Explorer
Dim sTemp1 As String, sText As String, sCut As String, a As Long
sText = rtbInput.Text
sCut = "ОбычныйТерминСписокопределенийАдресЦитатыФорматированныйконецформыначалоформы"
If Len(sText) < (LenInputMsg + Len(sCut)) Then GoTo 10
a = InStr(SaveSelStartBeg + 1, sText, sCut)
If a = 0 Then GoTo 10 'проблем нет
'установить флаг замены
flagCut = 1
rtbInput.SelStart = SaveSelStartBeg
rtbInput.SelLength = Len(sText) - LenInputMsg
sTemp1 = Mid$(sText, SaveSelStartBeg + 1 + Len(sCut), (Len(sText) - LenInputMsg - Len(sCut)))
If Len(sTemp1) <= 2 Then GoTo 5
'откинуть 2 байта перевода строки (и откуда они берутся?)
rtbInput.SelText = "" 'здесь по идее должно убраться форматирование вставляемой строки
rtbInput.SelText = Left(sTemp1, (Len(sTemp1) - 2))
5 sText = rtbInput.Text
10
'запомнить старые значения
LenInputMsg = Len(sText)
flagCut = 0
'*** КОНЕЦ

End Sub

Хотел убрать фоматирование вставляемой строки (мне так надо), но не получилось :(.
Также эту проблему можно решить заменой специального файла Винды
http://forum.vingrad.ru/index.php?act=m ... er_enabled
или подправить, но не будет ли проблем в будующих версиях Винды?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.08.2006 (Пн) 7:40

Вообще-то это названия стилей, которые встраиваются в HTML при копировании.
Думаю, если очищать форматы в буфере обмена, оставляя только текстовый, должно помочь.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 77

    TopList