Gerätespezifische Ereignisse für Telefon und Adress
Das folgende Codebeispiel veranschaulicht einen Ereignishandler für Adress- und Telefongeräteereignisse. Der Code für jedes Ereignis zeigt, wie die Ereignisschnittstelle erstellt und die Ereignisdaten abgerufen werden.
HRESULT STDMETHODCALLTYPE CMyEventNotification::Event(
TAPI_EVENT TapiEvent,
IDispatch * pEvent
)
{
HRESULT hr = S_OK;
//...
switch (TapiEvent)
{
case TE_ADDRESSDEVSPECIFIC:
{
ITAddressDeviceSpecificEvent* pITADSEvent = NULL;
hr = pEvent->QueryInterface(
IID_ITAddressDeviceSpecificEvent,
(void **)(&pITADSEvent) );
// If (hr != S_OK) process the error here...
// Retrieve data received from the TSP.
long lParam1=0;
hr = pITADSEvent->get_lParam1(&lParam1);
// If (hr != S_OK) process the error here...
long lParam2=0;
hr = pITADSEvent->get_lParam2(&lParam2);
// If (hr != S_OK) process the error here...
long lParam3=0;
hr = pITADSEvent->get_lParam3(&lParam3);
// If (hr !=S_OK) process the error here...
// Process the data here.
// ...
pITADSEvent->Release();
break;
}
case TE_PHONEDEVSPECIFIC:
{
ITPhoneDeviceSpecificEvent* pITPhEvent = NULL;
hr = pEvent->QueryInterface(
IID_ITPhoneDeviceSpecificEvent,
(void **)(&pITPhEvent) );
// If (hr != S_OK) process the error here...
// Retrieve data received from the TSP.
long lParam1=0;
hr = pITPhEvent->get_lParam1(&lParam1);
// If (hr != S_OK) process the error here...
long lParam2=0;
hr = pITPhEvent->get_lParam2(&lParam2);
// If (hr != S_OK) process the error here...
long lParam3=0;
hr = pITPhEvent->get_lParam3(&lParam3);
// If (hr != S_OK) process the error here...
// Process the data here.
//...
pITPhEvent->Release();
break;
}
//...
} // end of switch
//...
}