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

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

Added new logging feature

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