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

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

Message handling rewrite

File size: 2.2 KB
Line 
1/* $Id: winmouse.cpp,v 1.2 1999-12-24 18:51:55 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;
19
20//******************************************************************************
21//******************************************************************************
22VOID WIN32API MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc)
23{
24 if(lpMouseEventProc == (LPMOUSE_EVENT_PROC)-1)
25 {
26 mouseHandler = NULL;
27 }
28 else mouseHandler = lpMouseEventProc;
29}
30//******************************************************************************
31//******************************************************************************
32BOOL DInputMouseHandler(HWND hwnd, ULONG msg, ULONG x, ULONG y)
33{
34 WINE_MOUSEEVENT mouseEvent;
35 DWORD dwFlags = MOUSEEVENTF_ABSOLUTE;
36
37 if(!ISMOUSE_CAPTURED())
38 return FALSE;
39
40 mouseEvent.magic = WINE_MOUSEEVENT_MAGIC;
41 mouseEvent.hWnd = hwnd;
42 mouseEvent.time = OSLibWinQueryMsgTime();
43 mouseEvent.keyState = 0; //not used in dinput right now
44 if(msg == MOUSEMSG_BUTTON)
45 {
46 switch(msg)
47 {
48 case WM_LBUTTONDOWN:
49 dwFlags |= MOUSEEVENTF_LEFTDOWN;
50 break;
51 case WM_LBUTTONUP:
52 dwFlags |= MOUSEEVENTF_LEFTUP;
53 break;
54 case WM_RBUTTONUP:
55 dwFlags |= MOUSEEVENTF_RIGHTUP;
56 break;
57 case WM_RBUTTONDOWN:
58 dwFlags |= MOUSEEVENTF_RIGHTDOWN;
59 break;
60 case WM_MBUTTONUP:
61 dwFlags |= MOUSEEVENTF_MIDDLEUP;
62 break;
63 case WM_MBUTTONDOWN:
64 dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
65 break;
66 }
67 }
68 else dwFlags |= MOUSEEVENTF_MOVE;
69
70 x = (((long)x << 16) + ScreenWidth-1) / ScreenWidth;
71 y = (((long)y << 16) + ScreenHeight-1) / ScreenHeight;
72
73 mouseHandler(dwFlags, x, y, 0, (DWORD)&mouseEvent);
74 return TRUE;
75}
76//******************************************************************************
77//******************************************************************************
Note: See TracBrowser for help on using the repository browser.