Измените div innerHTML через IHTMLDocument2 и переполнение стека

Я пытаюсь изменить содержимое div с помощью интерфейса IHTMLDocument2 следующим образом:

    IHTMLElementCollection* collection = NULL;
IDispatch* mydiv;

doc2->get_all(&collection);
long count;
collection->get_length(&count);     //just to check I get something

CComVariant varstr = L"mydivname";
CComVariant varint = 0;
collection->item(varstr, varint, &mydiv);    //this works I get the div
IHTMLElement* htmldiv;
mydiv->QueryInterface(IID_IHTMLElement, (void**)&htmldiv);

CComBSTR html;
htmldiv->get_innerHTML(&html);      //works too, I get the current content

HRESULT hr=htmldiv->put_innerText(L"hello");      //this does not work but returns S_OK

collection->Release();

Таким образом, содержимое моего div просто очищается и не заменяется на «привет», я не понимаю почему, это может быть проблемой безопасности?

Спасибо

2

Решение

Согласно Документация MSDN, строка передана put_innerText имеет тип BSTR,

Итак, я бы посоветовал попробовать такой код:

CComBSTR text(OLESTR("hello"));
hr = htmldiv->put_innerText(text);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]