home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 035 / kwclass.zip / KPTHDR.CPP < prev    next >
C/C++ Source or Header  |  1994-04-18  |  3KB  |  101 lines

  1. #define INCL_PM
  2. #include <os2.h>
  3. #include <kpthdr.hpp>
  4. #include <ireslib.hpp>
  5. #include <ihandle.hpp>
  6.  
  7. KPointerHandler::KPointerHandler(IPointerHandle *hdl)
  8.    : handle(0)
  9. {
  10.    if (hdl)
  11.       handle = new IPointerHandle(*hdl);  
  12. }
  13.  
  14. KPointerHandler &KPointerHandler::setPointer(ISystemPointerHandle::Identifier id)
  15. {
  16.    delete handle;
  17.    handle = new ISystemPointerHandle(id);
  18.    return (KPointerHandler &) *this;
  19. }
  20.  
  21. KPointerHandler &KPointerHandler::setPointer(const IResourceId& resId)
  22. {
  23.    delete handle;
  24.    IPointerHandle hdl = resId.resourceLibrary().loadPointer(resId.id());
  25.    handle = new IPointerHandle(hdl);
  26.    return (KPointerHandler &) *this;
  27. }
  28.  
  29. IPointerHandle KPointerHandler::pointer() const
  30. {
  31.    return *handle;
  32. }
  33.  
  34. KPointerHandler::~KPointerHandler()
  35. {
  36.    delete handle;
  37. }
  38.  
  39. /*-----------------------------------------------------------------
  40.   mouseMove:
  41.   
  42.   This function is invoked by dispatchHandlerEvent when a mouse 
  43.   movement event is received (which occurs whenever the user 
  44.   moves the mouse pointer over the window).  It uses the 
  45.   Presentation Manger WinSetPointer function to change the shape
  46.   of the mouse pointer while it is above the owning window.
  47. ---------------------------------------------------------------- */
  48. Boolean KPointerHandler::mouseMove(IEvent &event)
  49. {
  50.    if (handle)
  51.    {
  52.       WinSetPointer(HWND_DESKTOP, *handle);
  53.       return true;
  54.    }
  55.    else
  56.       return false;
  57. }
  58.  
  59. /*-----------------------------------------------------------------
  60.   controlPointer:
  61.  
  62.   This function is invoked by dispatchHandlerEvent when a mouse 
  63.   movement is received by a child control window.  
  64. -----------------------------------------------------------------*/
  65. Boolean KPointerHandler::controlPointer(IEvent &event)
  66. {
  67.    if (handle)
  68.    {
  69.       event.setResult(handle);
  70.       return true;
  71.    }
  72.    else
  73.       return false;
  74. }
  75.  
  76. /*-----------------------------------------------------------------
  77.   dispatchHandlerEvent:
  78.   
  79.   This function overrides IHandler::dispatchHandlerEvent,
  80.   and is invoked whenever the handler object receives an event of
  81.   any type.  When the event received is triggered by a WM_MOUSEMOVE
  82.   message, this function invokes the mouseMove member function
  83. ----------------------------------------------------------------- */
  84. Boolean KPointerHandler::dispatchHandlerEvent(IEvent &event)
  85. {
  86.    switch(event.eventId())
  87.    {
  88.       case WM_MOUSEMOVE:
  89.          return mouseMove(event);
  90.  
  91.    //   case WM_CONTROLPOINTER:
  92.    //      return controlPointer(event);
  93.  
  94.       default:
  95.          break;
  96.    }
  97.    return false;
  98. }
  99.  
  100.  
  101.