2013-10-30 8 views
0

누구든지 호스팅에서 좋은 자료를 제안 할 수 있습니까 MSHTML.DLL/Trident (SHDOCVW.DLL/WebBrowser)이 아닙니까? GUI 요소, 때로는 주요 요소에 C++로 사용하고 싶습니다. HTML 렌더링, 추가 호스트 제공 DOM 메서드 및 속성, 이벤트가있는 JavaScript가 필요합니다.MSHTML.DLL을 직접 호스팅하는 데 필요한 자료를 읽어야합니까? (WebBrowser가 아님)?

내 인상은 WebBrowser가 필요한 것은 아무것도 제공하지 않고, 크로스 페이지 탐색, 기록, UI, 컨텍스트 메뉴, 레지스트리 종속성, 제네릭 등의 기능을 사용하지 않도록 설정해야한다는 것입니다. 액티브 문서 호스팅, 다운로드 등

많은 경우에 MSHTML이라고해도 모든 WebBrowser 컨트롤에 대한 기사가 있습니다. Microsoft 설명서를 보면 MSHTML과 WebBrowser가 무엇인지 이해하기가 어렵습니다. 예를 들어, "Other MSHTML Interfaces"은 MSHTML.DLL의 일부가 아닌 IWebBrowser2를 나열합니다.

+0

Mshtml은 HTML 파서와 DOM 만 제공합니다. 실제로 웹 페이지를 보려면 * 화면에 표시해야합니다. "쓸모없는"shdocvw는 무엇을합니다. 직접 구현하는 것은 비현실적입니다. 오프 사이트 리소스를 요청할 수는 없습니다. –

+0

[호스팅 및 재사용] (http://msdn.microsoft.com/en-us/library/aa752038(v=vs.85) .aspx), [Reusing MSHTML] (http://msdn.microsoft .com/en-us/library/bb508516 (v = vs.85) .aspx) 등등? – CodeCaster

+0

@HansPassant, [MS docs] (http://msdn.microsoft.com/en-us/library/aa752038(v=vs.85).aspx)에 따르면, WebBrowser를 사용하는 것이 " 브라우저의 확장 된 기능을 캡슐화합니다. "MSHTML을 사용하면서 HTML 및 CSS 파서 및 렌더러를 사용하지만 브라우저의 다른 기능을 활용할 수는 없습니다. 물론 @CodeCaster는 – crackers

답변

2

MSHTML은 액티브 문서 서버입니다. WebBrowser 및 Internet Explorer는 활성 문서 호스트입니다. 직접 MSHTML을 호스팅하려는 경우 모든 Active Document 호스팅 인터페이스를 구현해야합니다. IOleDocumentSite 또는 IOleInPlaceFrame (이 프레임 워크는 선택 프레임 워크에서 제공하는 일반 OLE 호스팅 인터페이스 위에 있습니다).

또한 MSHTML에서는 해당 호스트가 ITargetContainerITargetFrame을 구현해야합니다. 이들은 잘 설명되어 있지 않습니다.

게다가 이미 알고 있듯이 MSHTML은 탐색을 지원하지 않습니다. HTML 컨텐트를 다운로드하거나 가져 와서 객체에 공급해야합니다.

이러한 이유로 일부 제한된 시나리오 (예 : UI가없는 HTML 구문 분석기, WalkAll 샘플 참조)를 제외하고는 MSHTML을 직접 호스팅하기가 어렵습니다. 이것이 주제에 대한 정보가 거의없고 샘플도 거의없는 이유입니다. 대부분의 경우 문제가되지 않습니다. WebBrowser 컨트롤을 호스트하고 about:blank으로 이동하고 IWebBrowser2::get_Document으로 호스트하는 MSHTML 인스턴스를 가져 와서 원하는대로 수행하십시오.

+0

감사합니다. 사실, MSHTML/Trident는 컨텍스트 메뉴와 같이 WebBrowser가 생각한 몇 가지 사항을 구현 한 것으로 보입니다. 나는 단지 그걸 가지고 놀아야 할 것이다. – crackers