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 }