|
|
#include "stdafx.h"
#include "t3test.h"
#include "t3testD.h"
#include "externs.h"
void CT3testDlg::HandleCallHubEvent( IDispatch * pEvent ) { HRESULT hr; ITCallHubEvent * pCallHubEvent; CALLHUB_EVENT che;
hr = pEvent->QueryInterface( IID_ITCallHubEvent, (void **)&pCallHubEvent );
if (!SUCCEEDED(hr)) { return; }
hr = pCallHubEvent->get_Event( &che );
if (!SUCCEEDED(hr)) { return; }
switch ( che ) { case CHE_CALLHUBNEW:
break; case CHE_CALLHUBIDLE:
break; default: break; }
pCallHubEvent->Release();
}
void CT3testDlg::HandleTapiObjectMessage( IDispatch * pEvent ) { ITTAPIObjectEvent * pte; HRESULT hr; TAPIOBJECT_EVENT te;
hr = pEvent->QueryInterface( IID_ITTAPIObjectEvent, (void**)&pte );
if ( !SUCCEEDED(hr) ) { return; }
pte->get_Event( &te );
switch (te) { case TE_ADDRESSCREATE: case TE_ADDRESSREMOVE:
ReleaseMediaTypes(); ReleaseTerminals(); ReleaseCalls(); ReleasePhones(); ReleaseSelectedTerminals(); ReleaseCreatedTerminals(); ReleaseTerminalClasses(); ReleaseListen(); ReleaseAddresses(); InitializeAddressTree();
break;
case TE_PHONECREATE: case TE_PHONEREMOVE: { ITAddress * pSelectedAddress; ITTAPIObjectEvent2 * pTAPIObjectEvent2; ITPhone * pPhone; BSTR bstrName = NULL;
hr = pte->QueryInterface(IID_ITTAPIObjectEvent2, (void **)&pTAPIObjectEvent2);
if (SUCCEEDED(hr)) { hr = pTAPIObjectEvent2->get_Phone( &pPhone );
if (SUCCEEDED(hr)) { hr = pPhone->get_PhoneCapsString( PCS_PHONENAME, &bstrName );
if (SUCCEEDED(hr)) { switch(te) { case TE_PHONECREATE: ::MessageBox(NULL, bstrName, L"TE_PHONECREATE", MB_OK); break; case TE_PHONEREMOVE: ::MessageBox(NULL, bstrName, L"TE_PHONEREMOVE", MB_OK); break; }
SysFreeString( bstrName ); } pPhone->Release(); } pTAPIObjectEvent2->Release(); }
if ( GetAddress( &pSelectedAddress ) ) { ReleasePhones(); UpdatePhones( pSelectedAddress ); } }
break; default: break; }
pte->Release(); }
void CT3testDlg::HandleAddressEvent( IDispatch * pEvent ) { ITAddressEvent * pAddressEvent; ITTerminal * pTerminal; ITAddress * pAddress; ITAddress * pSelectedAddress; LONG lMediaType; LONG lSelectedMediaType; BSTR bstrName = NULL; ADDRESS_EVENT ae; HRESULT hr;
hr = pEvent->QueryInterface(IID_ITAddressEvent, (void **)&pAddressEvent);
if (SUCCEEDED(hr)) { hr = pAddressEvent->get_Event( &ae );
if (SUCCEEDED(hr)) { if ( (ae == AE_NEWTERMINAL) || (ae == AE_REMOVETERMINAL) ) { hr = pAddressEvent->get_Terminal( &pTerminal );
if (SUCCEEDED(hr)) { hr = pTerminal->get_Name( &bstrName );
if (SUCCEEDED(hr)) { hr = pAddressEvent->get_Address( &pAddress );
if (SUCCEEDED(hr)) { hr = pTerminal->get_MediaType( &lMediaType );
if (SUCCEEDED(hr)) { if (CT3testDlg::GetMediaType( &lSelectedMediaType ) && ( lSelectedMediaType == lMediaType) && CT3testDlg::GetAddress( &pSelectedAddress ) && ( pSelectedAddress == pAddress) ) { switch(ae) { case AE_NEWTERMINAL: ::MessageBox(NULL, bstrName, L"AE_NEWTERMINAL", MB_OK); break; case AE_REMOVETERMINAL: ::MessageBox(NULL, bstrName, L"AE_REMOVETERMINAL", MB_OK); break; }
CT3testDlg::ReleaseTerminals(); CT3testDlg::UpdateTerminals( pAddress, lMediaType ); } } pAddress->Release(); } SysFreeString( bstrName ); } pTerminal->Release(); } } } pAddressEvent->Release(); } }
void CT3testDlg::HandlePhoneEvent( IDispatch * pEvent ) { ITPhoneEvent * pPhoneEvent; ITPhone * pPhone; PHONE_EVENT pe; HRESULT hr;
hr = pEvent->QueryInterface(IID_ITPhoneEvent, (void **)&pPhoneEvent);
if (SUCCEEDED(hr)) { hr = pPhoneEvent->get_Event( &pe );
if (SUCCEEDED(hr)) { hr = pPhoneEvent->get_Phone( &pPhone );
if ( SUCCEEDED(hr) ) { switch( pe ) { case PE_DISPLAY: ::MessageBox(NULL, L"", L"PE_DISPLAY", MB_OK); break; case PE_LAMPMODE: ::MessageBox(NULL, L"", L"PE_LAMPMODE", MB_OK); break; case PE_RINGMODE: ::MessageBox(NULL, L"", L"PE_RINGMODE", MB_OK); break; case PE_RINGVOLUME: ::MessageBox(NULL, L"", L"PE_RINGVOLUME", MB_OK); break; case PE_HOOKSWITCH: { PHONE_HOOK_SWITCH_DEVICE HookSwitchDevice; PHONE_HOOK_SWITCH_STATE HookSwitchState; WCHAR szText[256];
hr = pPhoneEvent->get_HookSwitchDevice( &HookSwitchDevice );
if ( SUCCEEDED(hr) ) { hr = pPhoneEvent->get_HookSwitchState( &HookSwitchState ); if ( SUCCEEDED(hr) ) { switch( HookSwitchDevice ) { case PHSD_HANDSET: lstrcpyW(szText, L"PHSD_HANDSET"); break; case PHSD_SPEAKERPHONE: lstrcpyW(szText, L"PHSD_SPEAKERPHONE"); break; case PHSD_HEADSET: lstrcpyW(szText, L"PHSD_HEADSET"); break; }
switch( HookSwitchState ) { case PHSS_ONHOOK: lstrcatW(szText, L" PHSS_ONHOOK"); break; case PHSS_OFFHOOK: lstrcatW(szText, L" PHSS_OFFHOOK"); break; }
//::MessageBox(NULL, szText, L"PE_HOOKSWITCH", MB_OK);
} } } break; case PE_CAPSCHANGE: ::MessageBox(NULL, L"", L"PE_CAPSCHANGE", MB_OK); break; case PE_BUTTON: { long lButtonId; BSTR pButtonText; WCHAR szText[256]; PHONE_BUTTON_STATE ButtonState;
hr = pPhoneEvent->get_ButtonLampId( &lButtonId );
if ( SUCCEEDED(hr) ) { hr = pPhone->get_ButtonText( lButtonId, &pButtonText ); if ( SUCCEEDED( hr ) ) { lstrcpyW(szText, pButtonText); //wsprintf(szText, L"%d", lButtonId);
hr = pPhoneEvent->get_ButtonState( &ButtonState );
if ( SUCCEEDED( hr ) ) { switch( ButtonState ) { case PBS_UP: lstrcatW(szText, L" PBS_UP");
/*
if ((lButtonId >= PT_KEYPADZERO) && (lButtonId <= PT_KEYPADPOUND)) { ITAutomatedPhoneControl * pPhoneControl;
//
// get the automated phone control interface
//
hr = pPhone->QueryInterface(IID_ITAutomatedPhoneControl, (void **)&pPhoneControl);
if (S_OK != hr) { ::MessageBox(NULL, L"QueryInterface failed", NULL, MB_OK); return; } PHONE_TONE Tone; pPhoneControl->get_Tone(&Tone);
if ((long)Tone == lButtonId) { hr = pPhoneControl->StopTone(); } pPhoneControl->Release(); } */ break; case PBS_DOWN: lstrcatW(szText, L" PBS_DOWN");
/*
if ((lButtonId >= PT_KEYPADZERO) && (lButtonId <= PT_KEYPADPOUND)) { ITAutomatedPhoneControl * pPhoneControl;
//
// get the automated phone control interface
//
hr = pPhone->QueryInterface(IID_ITAutomatedPhoneControl, (void **)&pPhoneControl);
if (S_OK != hr) { ::MessageBox(NULL, L"QueryInterface failed", NULL, MB_OK); return; }
hr = pPhoneControl->StartTone((PHONE_TONE)lButtonId, 0);
pPhoneControl->Release(); } */ break; case PBS_UNKNOWN: lstrcatW(szText, L" PBS_UNKNOWN"); break; case PBS_UNAVAIL: lstrcatW(szText, L" PBS_UNAVAIL"); break; }
//::MessageBox(NULL, szText, L"PE_BUTTON", MB_OK);
}
//SysFreeString( pButtonText );
} } } break; case PE_CLOSE: ::MessageBox(NULL, L"", L"PE_CLOSE", MB_OK); break; case PE_NUMBERGATHERED: { BSTR pNumberGathered;
hr = pPhoneEvent->get_NumberGathered( &pNumberGathered );
if ( SUCCEEDED(hr) && (pNumberGathered != NULL) ) { ::MessageBox(NULL, pNumberGathered, L"PE_NUMBERGATHERED", MB_OK); } } break; }
pPhone->Release(); } }
pPhoneEvent->Release(); } }
|