Windows2003-3790/inetcore/connectionwizard/icwconn1/connect.cpp
2020-09-30 16:53:55 +02:00

209 lines
5.7 KiB
C++

//**********************************************************************
// 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;
}