//********************************************************************** // File name: connect.cpp // // Implementation of connection point sink objects // // Functions: // // Copyright (c) 1992 - 1998 Microsoft Corporation. All rights reserved. //********************************************************************** #include "pre.h" #include "icwextsn.h" /* * CRefDialEvent::CRefDialEvent * CRefDialEvent::~CRefDialEvent * * Parameters (Constructor): * pSite PCSite of the site we're in. * pUnkOuter LPUNKNOWN to which we delegate. */ CRefDialEvent::CRefDialEvent( HWND hWnd ) { m_hWnd = hWnd; m_cRef = 0; } CRefDialEvent::~CRefDialEvent( void ) { assert( m_cRef == 0 ); } /* * CRefDialEvent::QueryInterface * CRefDialEvent::AddRef * CRefDialEvent::Release * * Purpose: * IUnknown members for CRefDialEvent object. */ STDMETHODIMP CRefDialEvent::QueryInterface( REFIID riid, void **ppv ) { *ppv = NULL; if ( IID_IDispatch == riid || DIID__RefDialEvents == riid ) { *ppv = this; } if ( NULL != *ppv ) { ((LPUNKNOWN)*ppv)->AddRef(); return NOERROR; } return E_NOINTERFACE; } STDMETHODIMP_(ULONG) CRefDialEvent::AddRef(void) { return ++m_cRef; } STDMETHODIMP_(ULONG) CRefDialEvent::Release(void) { return --m_cRef; } //IDispatch STDMETHODIMP CRefDialEvent::GetTypeInfoCount(UINT* /*pctinfo*/) { return E_NOTIMPL; } STDMETHODIMP CRefDialEvent::GetTypeInfo(/* [in] */ UINT /*iTInfo*/, /* [in] */ LCID /*lcid*/, /* [out] */ ITypeInfo** /*ppTInfo*/) { return E_NOTIMPL; } STDMETHODIMP CRefDialEvent::GetIDsOfNames( /* [in] */ REFIID riid, /* [size_is][in] */ OLECHAR** rgszNames, /* [in] */ UINT cNames, /* [in] */ LCID lcid, /* [size_is][out] */ DISPID* rgDispId) { HRESULT hr = ResultFromScode(DISP_E_UNKNOWNNAME); return hr; } STDMETHODIMP CRefDialEvent::Invoke( /* [in] */ DISPID dispIdMember, /* [in] */ REFIID /*riid*/, /* [in] */ LCID /*lcid*/, /* [in] */ WORD wFlags, /* [out][in] */ DISPPARAMS* pDispParams, /* [out] */ VARIANT* pVarResult, /* [out] */ EXCEPINFO* /*pExcepInfo*/, /* [out] */ UINT* puArgErr) { switch(dispIdMember) { case DISPID_RasDialStatus: { BSTR bstrDialStatus = NULL; // Get the Status Text if (gpWizardState->iRedialCount > 0) gpWizardState->pRefDial->put_Redial(TRUE); else gpWizardState->pRefDial->put_Redial(FALSE); gpWizardState->pRefDial->get_DialStatusString(&bstrDialStatus); SetWindowText(GetDlgItem(m_hWnd, IDC_REFSERV_DIALSTATUS), W2A(bstrDialStatus)); SysFreeString(bstrDialStatus); break; } case DISPID_DownloadProgress: { long lNewPos; if (pDispParams) { lNewPos = pDispParams->rgvarg[0].lVal; if (!gpWizardState->bStartRefServDownload) { BSTR bstrDialStatus = NULL; gpWizardState->pRefDial->get_DialStatusString(&bstrDialStatus); SetWindowText(GetDlgItem(m_hWnd, IDC_REFSERV_DIALSTATUS), W2A(bstrDialStatus)); SysFreeString(bstrDialStatus); } gpWizardState->bStartRefServDownload = TRUE; // Set the Progress Position SendDlgItemMessage(m_hWnd, IDC_REFSERV_DIALPROGRESS, PBM_SETPOS, (WORD)lNewPos, 0l); } break; } case DISPID_DownloadComplete: { ASSERT(pDispParams); if(gpWizardState->lRefDialTerminateStatus != ERROR_CANCELLED) { if ((gpWizardState->lRefDialTerminateStatus = pDispParams->rgvarg[0].lVal) == ERROR_SUCCESS) { gpWizardState->bDoneRefServDownload = TRUE; BSTR bstrDialStatus = NULL; gpWizardState->pRefDial->get_DialStatusString(&bstrDialStatus); SetWindowText(GetDlgItem(m_hWnd, IDC_REFSERV_DIALSTATUS), W2A(bstrDialStatus)); SysFreeString(bstrDialStatus); } // Hangup gpWizardState->pRefDial->DoHangup(); PropSheet_PressButton(GetParent(m_hWnd),PSBTN_NEXT); } break; } case DISPID_RasConnectComplete: { BOOL bRetVal; if(gpWizardState->lRefDialTerminateStatus != ERROR_CANCELLED) { if (pDispParams && pDispParams->rgvarg[0].bVal) { // Show the progress bar ShowWindow(GetDlgItem(m_hWnd, IDC_REFSERV_DIALPROGRESS), SW_SHOW); gpWizardState->bDoneRefServRAS = TRUE; // Start the Offer Download gpWizardState->pRefDial->DoOfferDownload(&bRetVal); } else { // Simulate the press of the NEXT button gpWizardState->pRefDial->DoHangup(); PropSheet_PressButton(GetParent(m_hWnd),PSBTN_NEXT); } } break; } } return S_OK; }