source: trunk/src/user32/winmouse.cpp@ 3007

Last change on this file since 3007 was 3007, checked in by sandervl, 25 years ago

dinput changes

File size: 2.8 KB
Line 
1/* $Id: winmouse.cpp,v 1.7 2000-03-04 19:54:03 sandervl Exp $ */
2/*
3 * Mouse handler for DINPUT
4 *
5 * Copyright 1999 Sander van Leeuwen
6 *
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11#include <os2win.h>
12#include <misc.h>
13#include "win32wbase.h"
14#include <win\mouse.h>
15#include "winmouse.h"
16#include "oslibmsg.h"
17#include "pmwindow.h"
18
19#define DBG_LOCALLOG DBG_winmouse
20#include "dbglocal.h"
21
22LPMOUSE_EVENT_PROC mouseHandler = NULL;
23WNDPROC keyboardHandler = NULL;
24
25//******************************************************************************
26//******************************************************************************
27VOID WIN32API MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc)
28{
29 if(lpMouseEventProc == (LPMOUSE_EVENT_PROC)-1)
30 {
31 mouseHandler = NULL;
32 }
33 else mouseHandler = lpMouseEventProc;
34}
35//******************************************************************************
36//******************************************************************************
37VOID WIN32API KEYBOARD_Enable(WNDPROC handler)
38{
39 keyboardHandler = handler;
40}
41//******************************************************************************
42//******************************************************************************
43BOOL DInputKeyBoardHandler(MSG *msg)
44{
45 if(!ISKDB_CAPTURED())
46 return FALSE;
47
48 return keyboardHandler(msg->hwnd, msg->message, msg->wParam, msg->lParam);
49}
50//******************************************************************************
51//******************************************************************************
52BOOL DInputMouseHandler(HWND hwnd, ULONG msg, ULONG x, ULONG y)
53{
54 WINE_MOUSEEVENT mouseEvent;
55 DWORD dwFlags = MOUSEEVENTF_ABSOLUTE;
56
57 if(!ISMOUSE_CAPTURED())
58 return FALSE;
59
60 mouseEvent.magic = WINE_MOUSEEVENT_MAGIC;
61 mouseEvent.hWnd = hwnd;
62 mouseEvent.time = OSLibWinQueryMsgTime();
63 mouseEvent.keyState = 0; //not used in dinput right now
64 if(msg == MOUSEMSG_BUTTON)
65 {
66 switch(msg)
67 {
68 case WM_LBUTTONDOWN:
69 dwFlags |= MOUSEEVENTF_LEFTDOWN;
70 break;
71 case WM_LBUTTONUP:
72 dwFlags |= MOUSEEVENTF_LEFTUP;
73 break;
74 case WM_RBUTTONUP:
75 dwFlags |= MOUSEEVENTF_RIGHTUP;
76 break;
77 case WM_RBUTTONDOWN:
78 dwFlags |= MOUSEEVENTF_RIGHTDOWN;
79 break;
80 case WM_MBUTTONUP:
81 dwFlags |= MOUSEEVENTF_MIDDLEUP;
82 break;
83 case WM_MBUTTONDOWN:
84 dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
85 break;
86 }
87 }
88 else dwFlags |= MOUSEEVENTF_MOVE;
89
90 x = (((long)x << 16) + ScreenWidth-1) / ScreenWidth;
91 y = (((long)y << 16) + ScreenHeight-1) / ScreenHeight;
92
93 mouseHandler(dwFlags, x, y, 0, (DWORD)&mouseEvent);
94 return TRUE;
95}
96//******************************************************************************
97//******************************************************************************
Note: See TracBrowser for help on using the repository browser.