Share via


Register to Receive Events

Other versions of this page are also available for the following:

Windows Mobile Not SupportedWindows Embedded CE Supported

8/28/2008

The following code examples show how to register to receive events and listen for incoming calls. The operations in the Initialize RTC example must be performed before using these codes.

Note

This code has not been thoroughly tested, does not contain error checking, and is not intended for production use.

//
// Code 1: Set the event filter.
//
HRESULT hr = S_OK;
long lEventMask;

// Set the event mask to receive all event types.
lEventMask = RTCEF_ALL;

hr = pIRTCClient->put_EventFilter(lEventMask);

// if (hr != S_OK) process error here. 

//
// Code 2: Register the event interface. 
//
// Note: This method is in the CRTCOutgoing class, which
// implements the IRTCEventNotification interface.
HRESULT 
CRTCOutgoingDlg::StateSinkEvent(LONG lEventMask)
{
    HRESULT hr = S_OK;
    DWORD dwEventCookie;
    IUnknown *pUnknown = NULL;
    IConnectionPointContainer *pCPC = NULL;
    IConnectionPoint *pCP = NULL;

    hr = QueryInterface( IID_IUnknown,  
                         reinterpret_cast<void**> (&pUnknown) );

    // if (hr != S_OK) process error here.

    // Get the connection point container interface pointer. 
    hr = pIRTCClient->QueryInterface( IID_IConnectionPointContainer, 
                                   reinterpret_cast<void**> (&pCPC) );

    // if (hr != S_OK) process error here.

    // Get the RTC event notification interface 
    // from the connection point container. 
    hr = pCPC->FindConnectionPoint( IID_IRTCEventNotification, &pCP );

    // if (hr != S_OK) process error here.

    // Call the Advise method to give RTC the IUnknown pointer 
    // for the event.
    hr = pCP->Advise( pUnknown, &dwEventCookie ); 

    // if (hr != S_OK) process error here. 

    pCP->Release();
    pCPC->Release();
    pUnknown->Release();
    return hr;
}
//
// Code 3: Listen for calls.
//
// Listen on dynamic and well-known static ports. 
hr = pIRTCClient->put_ListenForIncomingSessions( RTCLM_BOTH ); 

// if (hr != S_OK) process error here.

See Also

Concepts

Fundamental RTC Code Examples