Mit IHTMLDocument2 Element einfügen
-
Hi,
ich möchte via IHTMLDocument2 ein <div class="..." style="..."></div> einfügen.
Wie kann ich das ausführen?
Das IHTMLDocument2 hab ich schon, nur fehlt mir nun die Methode um dieses <div> den browser intepretieren zu lassen.
IDispatch* pDispatch = m_Browser.GetHtmlDocument(); //Only if a resource or web page is loaded can we get the document if( pDispatch != NULL ) { IHTMLDocument2* pHtmlDoc; HRESULT hr = pDispatch->QueryInterface( __uuidof( IHTMLDocument2 ), (void**)&pHtmlDoc ); pDispatch->Release(); if( SUCCEEDED( hr ) ) { pHtmlDoc->put_designMode(L"On"); // Hier will ich das <div> einfügen ... pHtmlDoc->put_designMode(L"Off"); pHtmlDoc->Release(); } }
Vielen Dank für eure Hilfe ...
LukeX
-
Hi,
zuerst einmal eín Tipp von mir:
Verwende bei Interface-Zeigern immer die Wrapper CComPtr oder CComQIPtr.
Dadurch erhälst du SmartPointer auf die Schnittstellen und brauchst dich
nicht mehr um die Referenzzählung und das Releasen der Interfaces zu kümmern.
Das wird nämlich sehr unübersichtlich wenn du mal richtig loslegst auf die
Schnittstellen, und dabei verlierst Du garantiert die Übersicht.Okay, den Zeiger auf das Dokument holst du so:
CComQIPtr<IHTMLDocument2> spDocument(m_Browser.GetHtmlDocument()); if ( spDocument != NULL ) { // alles klar, mach was damit }
Danach brauchst du ein Interface auf das Body Objekt
CComPtr<IHTMLElement> spBody; spDocument->get_body(&spBody); if ( spBody != NULL ) { // mach was mit dem Body }
entweder holst du dir vom Body weitere elemente oder fügst im body ein
CComBSTR html("<div class=\"...\" style=\"...\"></div>"); spBody->insertAdjacentHTML(OLESTR("afterBegin"), html);
näheres siehe MSDN
Gruss
EB
-
hey EarlyBird,
vielen Dank.
Funktioniert 1A!
Grüße,
LukeX