Я пишу простой редактор WYSIWYG в формате HTML, используя Microsoft Mshtml. Одной из особенностей должен быть выбор типа заголовка (например, h1, h2, h3) для выбранного текста. Первое назначение не проблема со следующим кодом:
// *doc* is my IHTMLDocument
// *tag* contains the header tag
IHTMLTxtRange range = (IHTMLTxtRange)doc.selection.createRange()
string rangeText = range.text;
IHTMLElement elem = doc.createElement(tag)
elem.innerHTML = rangeText;
range.pasteHTML(elem.outerHTML);
Когда я пытаюсь изменить заголовок, старый не заменяется, хотя MSDN говорит о pasteHTML:
Вставляет HTML-текст в заданный текст
диапазон, заменяя любой предыдущий текст и
HTML элементы в ассортименте.
Это означает, что если мой HTML был
<H1>foo</H1>
после первого назначения получает
<H1>
<H2>asdasd</H2></H1>
после второго.
Что я делаю не так? Я что-то упустил?