00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "vmsWebBrowserEvents.h"
00009
00010 #ifdef _DEBUG
00011 #define new DEBUG_NEW
00012 #undef THIS_FILE
00013 static char THIS_FILE[] = __FILE__;
00014 #endif
00015
00016 BEGIN_DISPATCH_MAP(vmsWebBrowserEvents, CCmdTarget)
00017 DISP_FUNCTION_ID(vmsWebBrowserEvents, "DocumentComplete", DISPID_DOCUMENTCOMPLETE, OnDocumentComplete, VT_EMPTY, VTS_DISPATCH VTS_PVARIANT)
00018 END_DISPATCH_MAP()
00019
00020 vmsWebBrowserEvents::vmsWebBrowserEvents(CWebBrowser2 *pWB, IDocHostUIHandler *pUIHandler)
00021 {
00022 EnableAutomation ();
00023
00024 set_WebBrowser (pWB);
00025 set_UIHandler (pUIHandler);
00026 }
00027
00028 vmsWebBrowserEvents::~vmsWebBrowserEvents()
00029 {
00030 }
00031
00032 BEGIN_MESSAGE_MAP(vmsWebBrowserEvents, CCmdTarget)
00033
00034
00035
00036 END_MESSAGE_MAP()
00037
00038 HRESULT vmsWebBrowserEvents::Attach()
00039 {
00040 IConnectionPointContainerPtr spCPC;
00041
00042 LPUNKNOWN pUnk = m_pWB->GetControlUnknown ();
00043 if (pUnk == NULL)
00044 return E_FAIL;
00045
00046 spCPC = pUnk;
00047 if (spCPC == NULL)
00048 return E_FAIL;
00049
00050 spCPC->FindConnectionPoint (DIID_DWebBrowserEvents2, &m_spCP);
00051 if (m_spCP == NULL)
00052 return E_FAIL;
00053
00054 return m_spCP->Advise (GetIDispatch (FALSE), &m_dwCookie);
00055 }
00056
00057 void vmsWebBrowserEvents::Detach()
00058 {
00059 if (m_spCP)
00060 {
00061 m_spCP->Unadvise (m_dwCookie);
00062 m_spCP = NULL;
00063 }
00064 }
00065
00066 void vmsWebBrowserEvents::set_WebBrowser(CWebBrowser2 *pWB)
00067 {
00068 m_pWB = pWB;
00069 }
00070
00071 void vmsWebBrowserEvents::set_UIHandler(IDocHostUIHandler *pUIHandler)
00072 {
00073 m_spUIHandler = pUIHandler;
00074 }
00075
00076 void vmsWebBrowserEvents::OnDocumentComplete(LPDISPATCH pdWB, VARIANT *URL)
00077 {
00078 if (m_spUIHandler != NULL)
00079 {
00080 IWebBrowser2Ptr spWB (pdWB);
00081 if (spWB == NULL)
00082 return;
00083
00084 IDispatchPtr spdDoc;
00085 spWB->get_Document (&spdDoc);
00086 IHTMLDocumentPtr spDoc (spdDoc);
00087 if (spDoc == NULL)
00088 return;
00089
00090 ICustomDocPtr spCD (spDoc);
00091 if (spCD != NULL)
00092 spCD->SetUIHandler (m_spUIHandler);
00093 }
00094 }