Ignore:
Timestamp:
Apr 30, 2002, 4:54:07 PM (23 years ago)
Author:
sandervl
Message:

Implemented WH_MOUSE_LL hook; removed DInput hack for keyboard & mouse message translation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/winmouse.cpp

    r7875 r8347  
    1 /* $Id: winmouse.cpp,v 1.22 2002-02-11 16:06:00 sandervl Exp $ */
     1/* $Id: winmouse.cpp,v 1.23 2002-04-30 14:54:06 sandervl Exp $ */
    22/*
    33 * Win32 mouse functions
     
    4949 ****************************************************************************/
    5050
    51 LPMOUSE_EVENT_PROC mouseHandler = NULL;
    52 WNDPROC            keyboardHandler = NULL;
    53 
    54 
    55 //******************************************************************************
    56 //******************************************************************************
    57 VOID WIN32API MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc)
    58 {
    59   if(lpMouseEventProc == (LPMOUSE_EVENT_PROC)-1)
    60     mouseHandler = NULL;
    61   else 
    62     mouseHandler = lpMouseEventProc;
    63 }
    64 //******************************************************************************
    65 //******************************************************************************
    66 VOID WIN32API KEYBOARD_Enable(WNDPROC handler)
    67 {
    68   keyboardHandler = handler;
    69 }
    70 //******************************************************************************
    71 //******************************************************************************
    72 BOOL DInputKeyBoardHandler(MSG *msg)
    73 {
    74   if(!ISKDB_CAPTURED())
    75         return FALSE;
    76 
    77   return keyboardHandler(msg->hwnd, msg->message, msg->wParam, msg->lParam);
    78 }
    79 //******************************************************************************
    80 //******************************************************************************
    81 BOOL DInputMouseHandler(HWND hwnd, ULONG msg, ULONG x, ULONG y)
    82 {
    83  WINE_MOUSEEVENT mouseEvent;
    84  DWORD dwFlags = MOUSEEVENTF_ABSOLUTE;
    85 
    86   if(!ISMOUSE_CAPTURED())
    87         return FALSE;
    88 
    89   mouseEvent.magic = WINE_MOUSEEVENT_MAGIC;
    90   mouseEvent.hWnd  = hwnd;
    91   mouseEvent.time  = OSLibWinQueryMsgTime();
    92   mouseEvent.keyState = 0; //not used in dinput right now
    93   switch(msg)
    94   {
    95   case WM_NCLBUTTONDOWN:
    96   case WM_LBUTTONDOWN:
    97         dwFlags |= MOUSEEVENTF_LEFTDOWN;
    98         break;
    99   case WM_NCLBUTTONUP:
    100   case WM_LBUTTONUP:
    101         dwFlags |= MOUSEEVENTF_LEFTUP;
    102         break;
    103   case WM_NCRBUTTONUP:
    104   case WM_RBUTTONUP:
    105         dwFlags |= MOUSEEVENTF_RIGHTUP;
    106         break;
    107   case WM_NCRBUTTONDOWN:
    108   case WM_RBUTTONDOWN:
    109         dwFlags |= MOUSEEVENTF_RIGHTDOWN;
    110         break;
    111   case WM_NCMBUTTONUP:
    112   case WM_MBUTTONUP:
    113         dwFlags |= MOUSEEVENTF_MIDDLEUP;
    114         break;
    115   case WM_NCMBUTTONDOWN:
    116   case WM_MBUTTONDOWN:
    117         dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
    118         break;
    119   case WM_MOUSEMOVE:
    120   case WM_NCMOUSEMOVE:
    121         dwFlags |= MOUSEEVENTF_MOVE;
    122         break;
    123   default:
    124         //TODO: handle double clicks???
    125         return FALSE;
    126   }
    127 
    128   x = (((long)x << 16) + ScreenWidth-1)  / ScreenWidth;
    129   y = (((long)y << 16) + ScreenHeight-1) / ScreenHeight;
    130 
    131   return mouseHandler(dwFlags, x, y, 0, (DWORD)&mouseEvent);
    132 }
    13351//******************************************************************************
    13452//******************************************************************************
     
    290208 * Remark    :
    291209 * Status    : UNTESTED STUB
     210 *             TODO: call hooks!!
    292211 *
    293212 * Author    : Patrick Haller [Thu, 1998/02/26 11:55]
Note: See TracChangeset for help on using the changeset viewer.