The following example demonstrates how to declare an active object Window Server event handling class.
Variant: ScreenPlay and non-ScreenPlay. Target audience: Application developers.
The steps are:
Provide a CActive::RunL() function to handle the completion of an asynchronous request—that is, the event being received. 
Provide a CActive::DoCancel() function to implement a cancellation request. 
Provide a function, here called IssueRequest(), to issue a request to the Window Server for events. 
Create a TWsEvent object to store the events. 
/* An active object that wraps a Window Server session.
   An event being received causes RunL() to be called,
   where the event is processed. */
class CExampleWsClient : public CActive
    {
public:
 ...
    // Active object protocol
    void RunL ();
    void DoCancel();
    // Issue request to Window Server for events
    IssueRequest();
private:
    // Access to Window Server session 
    RWsSession& iWs;
    // Access to screen device 
    CWsScreenDevice& iScreen;
    // Window server general event
    TWsEvent iWsEvent;
    }; Once the active object has been constructed, a request can be issued. In the following code fragment, the active object provides the function IssueRequest() to invoke the encapsulated event request function. Pass the a TRequestStatus object, iStatus, to the EventReady() function to request Window Server events from the iWs Window Server session. 
Use the CActive::SetActive() function, to indicate that the active object is currently active. 
/* Request Window Server events */
void CExampleWsClient::IssueRequest()
    {
    iWs.EventReady(&iStatus;); // request an event
    SetActive(); // so we're now active
    }