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

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

focus fixes + changes for dinput

File size: 2.8 KB
Line 
1/* $Id: winmouse.cpp,v 1.6 2000-03-01 13:30:07 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//******************************************************************************
43void DInputKeyBoardHandler(MSG *msg)
44{
45 if(keyboardHandler)
46 keyboardHandler(msg->hwnd, msg->message, msg->wParam, msg->lParam);
47}
48//******************************************************************************
49//******************************************************************************
50BOOL DInputMouseHandler(HWND hwnd, ULONG msg, ULONG x, ULONG y)
51{
52 WINE_MOUSEEVENT mouseEvent;
53 DWORD dwFlags = MOUSEEVENTF_ABSOLUTE;
54
55 if(!ISMOUSE_CAPTURED())
56 return FALSE;
57
58 mouseEvent.magic = WINE_MOUSEEVENT_MAGIC;
59 mouseEvent.hWnd = hwnd;
60 mouseEvent.time = OSLibWinQueryMsgTime();
61 mouseEvent.keyState = 0; //not used in dinput right now
62 if(msg == MOUSEMSG_BUTTON)
63 {
64 switch(msg)
65 {
66 case WM_LBUTTONDOWN:
67 dwFlags |= MOUSEEVENTF_LEFTDOWN;
68 break;
69 case WM_LBUTTONUP:
70 dwFlags |= MOUSEEVENTF_LEFTUP;
71 break;
72 case WM_RBUTTONUP:
73 dwFlags |= MOUSEEVENTF_RIGHTUP;
74 break;
75 case WM_RBUTTONDOWN:
76 dwFlags |= MOUSEEVENTF_RIGHTDOWN;
77 break;
78 case WM_MBUTTONUP:
79 dwFlags |= MOUSEEVENTF_MIDDLEUP;
80 break;
81 case WM_MBUTTONDOWN:
82 dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
83 break;
84 }
85 }
86 else dwFlags |= MOUSEEVENTF_MOVE;
87
88 x = (((long)x << 16) + ScreenWidth-1) / ScreenWidth;
89 y = (((long)y << 16) + ScreenHeight-1) / ScreenHeight;
90
91 mouseHandler(dwFlags, x, y, 0, (DWORD)&mouseEvent);
92 return TRUE;
93}
94//******************************************************************************
95//******************************************************************************
Note: See TracBrowser for help on using the repository browser.