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

Last change on this file since 2469 was 2469, checked in by sandervl, 26 years ago

* empty log message *

File size: 2.7 KB
Line 
1/* $Id: winmouse.cpp,v 1.4 2000-01-18 20:11:19 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 "winmouse.h"
15#include "oslibmsg.h"
16#include "pmwindow.h"
17
18LPMOUSE_EVENT_PROC mouseHandler = NULL;
19WNDPROC keyboardHandler = NULL;
20
21//******************************************************************************
22//******************************************************************************
23VOID WIN32API MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc)
24{
25 if(lpMouseEventProc == (LPMOUSE_EVENT_PROC)-1)
26 {
27 mouseHandler = NULL;
28 }
29 else mouseHandler = lpMouseEventProc;
30}
31//******************************************************************************
32//******************************************************************************
33VOID WIN32API KEYBOARD_Enable(WNDPROC handler)
34{
35 keyboardHandler = handler;
36}
37//******************************************************************************
38//******************************************************************************
39void DInputKeyBoardHandler(MSG *msg)
40{
41 if(keyboardHandler)
42 keyboardHandler(msg->hwnd, msg->message, msg->wParam, msg->lParam);
43}
44//******************************************************************************
45//******************************************************************************
46BOOL DInputMouseHandler(HWND hwnd, ULONG msg, ULONG x, ULONG y)
47{
48 WINE_MOUSEEVENT mouseEvent;
49 DWORD dwFlags = MOUSEEVENTF_ABSOLUTE;
50
51 if(!ISMOUSE_CAPTURED())
52 return FALSE;
53
54 mouseEvent.magic = WINE_MOUSEEVENT_MAGIC;
55 mouseEvent.hWnd = hwnd;
56 mouseEvent.time = OSLibWinQueryMsgTime();
57 mouseEvent.keyState = 0; //not used in dinput right now
58 if(msg == MOUSEMSG_BUTTON)
59 {
60 switch(msg)
61 {
62 case WM_LBUTTONDOWN:
63 dwFlags |= MOUSEEVENTF_LEFTDOWN;
64 break;
65 case WM_LBUTTONUP:
66 dwFlags |= MOUSEEVENTF_LEFTUP;
67 break;
68 case WM_RBUTTONUP:
69 dwFlags |= MOUSEEVENTF_RIGHTUP;
70 break;
71 case WM_RBUTTONDOWN:
72 dwFlags |= MOUSEEVENTF_RIGHTDOWN;
73 break;
74 case WM_MBUTTONUP:
75 dwFlags |= MOUSEEVENTF_MIDDLEUP;
76 break;
77 case WM_MBUTTONDOWN:
78 dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
79 break;
80 }
81 }
82 else dwFlags |= MOUSEEVENTF_MOVE;
83
84 x = (((long)x << 16) + ScreenWidth-1) / ScreenWidth;
85 y = (((long)y << 16) + ScreenHeight-1) / ScreenHeight;
86
87 mouseHandler(dwFlags, x, y, 0, (DWORD)&mouseEvent);
88 return TRUE;
89}
90//******************************************************************************
91//******************************************************************************
Note: See TracBrowser for help on using the repository browser.