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

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

Dinput additions + PostThreadMessageA/W fix

File size: 2.2 KB
Line 
1/* $Id: winmouse.cpp,v 1.1 1999-11-08 13:44:40 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, ULONG info)
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(info)
47 {
48 case BUTTON_LEFTDOWN:
49 dwFlags |= MOUSEEVENTF_LEFTDOWN;
50 break;
51 case BUTTON_LEFTUP:
52 dwFlags |= MOUSEEVENTF_LEFTUP;
53 break;
54 case BUTTON_RIGHTUP:
55 dwFlags |= MOUSEEVENTF_RIGHTUP;
56 break;
57 case BUTTON_RIGHTDOWN:
58 dwFlags |= MOUSEEVENTF_RIGHTDOWN;
59 break;
60 case BUTTON_MIDDLEUP:
61 dwFlags |= MOUSEEVENTF_MIDDLEUP;
62 break;
63 case BUTTON_MIDDLEDOWN:
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.