Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aşağıdaki kod örneklerinde basit bir olay işleyicisinin uygulanması, ana TAPI olay arabiriminin kaydı, olay filtresinin ayarlanması ve çağrı bildirimleri için kayıt gösterilmektedir.
Gösterilen olay işleyicisi gereksinim yerine bir örnektir. Birincil hedef, olayları alan iş parçacığının işi başka bir iş parçacığına geçirmeden önce çok az işlem gerçekleştirmesini sağlamaktır. Bu, olay işleyicisinin yüksek olay yükü durumlarında bir performans sorunu haline gelmesini önler.
Bu kod örneğini kullanmadan önce, TAPI başlatma ve AdresSeçme içinde işlemleri gerçekleştirmeniz gerekir.
Not
Bu örnekte hata denetimi yoktur ve üretim kodu için uygun sürümler vardır.
//
// Example 1: Implement a simple event handler.
//
HRESULT STDMETHODCALLTYPE
CTAPIEventNotification::Event(
TAPI_EVENT TapiEvent,
IDispatch * pEvent
)
{
// AddRef the event so it does not go away.
pEvent->AddRef();
// Post a message to our own UI thread.
BOOL bMessage;
bMessage = PostMessage(
ghDlg,
WM_PRIVATETAPIEVENT,
(WPARAM) TapiEvent,
(LPARAM) pEvent
);
// If (bMessage == 0) process the error here.
return S_OK;
}
//
// Example 2: Register the event interface.
//
long gulAdvise; // Globally declared
IConnectionPointContainer * pCPC;
IConnectionPoint * pCP;
IUnknown * pUnk;
// Get the connection point container interface pointer from the TAPI object.
hr = gpTapi->QueryInterface(
IID_IConnectionPointContainer,
(void **)&pCPC
);
// If ( hr != S_OK O) process the error here.
// Get the ITTAPIEventNotification interface pointer from the container.
hr = pCPC->FindConnectionPoint(
IID_ITTAPIEventNotification,
&pCP
);
// If ( hr != S_OK O) process the error here.
pCPC->Release();
// Create a private event notification object.
CTAPIEventNotification* pTapiEventNotification = new CTAPIEventNotification;
hr = pTapiEventNotification->QueryInterface(
IID_IUnknown,
(void **)&pUnk
);
// If ( hr != S_OK O) process the error here.
// Call the advise method to give TAPI the IUnknown pointer for the event handler.
hr = pCP->Advise(
pUnk,
(ULONG *)&gulAdvise
);
// If ( hr != S_OK O) process the error here.
pCP->Release();
//
// Example 3: Set the event filter.
//
// Assume we are interested only in call-related events.
hr = gpTapi->put_EventFilter(
TE_CALLNOTIFICATION | TE_CALLSTATE | TE_CALLMEDIA
);
// If ( hr != S_OK O) process the error here.
//
// Example 4: Register an address with TAPI
// for call notifications. Assume we are interested
// in video and audio calls, and that pAddress
// is a pointer to the ITAddress interface of
// an address that can handle both media types.
long glRegister; // Globally declared
hr = gpTapi->RegisterCallNotifications(
pAddress,
VARIANT_TRUE, // monitor privileges
VARIANT_TRUE, // owner privileges
TAPIMEDIATYPE_AUDIO|TAPIMEDIATYPE_VIDEO,
gulAdvise, // As returned by Advise
&glRegister
);
// If ( hr != S_OK O) process the error here.
İlgili konular