Pointer events

S60 mobile devices are not actually pointer devices. Pointer events are handled by the controls. A control should implement the function CCoeControl:HandlePointerEventL() to be able to handle pointer events. The CCoeControl:HandlePointerEventL() function is called by the framework whenever a pointer event occurs within the control.

virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent)

Before passing pointer events to controls, the framework does some processing for the event. If a TPointerEvent::EButton1Down event occurred in the control and the control does not currently have keyboard focus, it sends an event of type MCoeControlObserver::EEventRequestFocus to the control's observer — normally the control's container. The container control should then set focus onto the control in which the TPointerEvent::EButton1Down event occurred.

Note that, by default, pointer drag events and pointer move events are not delivered to controls. For additional information, see functions RWindowBase::PointerFilter() and CCoeControl::ClaimPointerGrab() . The following code example demonstrates usage of the TPointerEvent class:

void CEventsAppView::HandlePointerEventL(const TPointerEvent& aPointerEvent)
        {
        switch (aPointerEvent.iType)
                {
                case TPointerEvent::EButton1Down:
                        {
                        // Button 1 down
                        // Get pointer position
                        TPoint positionX = aPointerEvent.iPosition.iX;
                        TPoint positionY = aPointerEvent.iPosition.iY;
                        break;
                         }
                 case TPointerEvent::EButton1Up:
                        {
                        // button 1 up
                        break;
                        }
                 case TPointerEvent::EDrag:
                        {
                        // drag event
                        break;
                         }
                 case TPointerEvent::EMove:
                        {
                       // move event
                       break;
                        }
                 default:
                        {
                        // do something
                        break;
                  }
         }
}