2009-07-28 6 views
0

웹 브라우저 컨트롤이 있는데 컨테이너에 IDocHostUIHandler를 구현하려고합니다. 그러나 기본 IOleClientSite 없기 때문에 모든 이벤트를 기본 컨테이너에 전달할 수 없습니다..NET에서 IDocHostUIHandler를 어떻게 성공적으로 구현할 수 있습니까?

나는 사건의 일부에 잘못된 반응을 주거나 응용 프로그램을 충돌시키는 원인이되지 않는 등 모든 것에 응답하는 방법을 찾지 못했습니다.

폭스 예 : 나는 IE 또는 그런 일 아니에요 때문에

Public Sub ShowUI(ByVal dwID As UInteger, ByRef pActiveObject As Object, ByRef pCommandTarget As Object, ByRef pFrame As Object, ByRef pDoc As Object) Implements SecureBrowser.IDocHostUIHandler.ShowUI 
    'DefaultClientSite.ShowUI(dwID, pActiveObject, pCommandTarget, pFrame, pDoc) 
End Sub 

나는 기본적 된 IOleClientSite이 없습니다. MSDN은 포인터/ByRefs를 채우는 방법을 파악할 때 그다지 도움이되지 않습니다.

답변

0

IDocHostUIHanlder 인터페이스에 대해 실제로이 작업을 수행하지는 않았지만 일반적으로 구현하지 않으려는 모든 메서드에 대해 E_NOTIMPL을 반환하는 것으로 충분합니다.

MFC 소스가 포함 된 Visual Studio 버전이있는 경우 출력 구조를 설정하지 않고 대부분의 메서드에서 대부분 S_FALSE를 반환하는 CHtmlView에서 해당 구현을 볼 수 있습니다.

+0

기본적으로 E_NOTIMPL을 반환하면 COM이 강제로 기본 설정을 사용하게됩니다. 나는이 권리를 얻고 있는가? 그게 좋은 소리 같기 때문에 :) –

+0

그것은 이론이며, 일반적으로 Microsoft가 제공하는 확장 인터페이스에서 작동합니다. 그러나 E_NOTIMPL을 반환하고 적절한 작업을 수행 한 것은 호출자 (여기에서는 IE)의 책임입니다. 나는 E_NOTIMPL을 시도하는 것으로 시작하고, 실패 할 경우 MFC가 수행하는 작업 (주로 S_FALSE를 반환)을 조사한다. – DavidK

관련 문제