Mercurial > sdl-ios-xcode
annotate src/video/wincommon/SDL_lowvideo.h @ 4249:429c8dd3175d SDL-1.2
Fixed bug #713
Don't clamp the mouse coordinates to the video surface size, instead clamp them to the last known window size.
This allows users to get the correct mouse coordinates even if they don't call SDL_SetVideoMode() in response to an SDL_VIDEORESIZE event (used as a hack to retain the OpenGL context on Windows and Linux after a window resize)
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 27 Sep 2009 05:18:43 +0000 |
parents | a6f635e5eaa6 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
4159 | 3 Copyright (C) 1997-2009 Sam Lantinga |
0 | 4 |
5 This library is free software; you can redistribute it and/or | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1295
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
0 | 7 License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1295
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
0 | 9 |
10 This library is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1295
diff
changeset
|
13 Lesser General Public License for more details. |
0 | 14 |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1295
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1295
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1295
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
19 Sam Lantinga | |
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
145
diff
changeset
|
20 slouken@libsdl.org |
0 | 21 */ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
22 #include "SDL_config.h" |
0 | 23 |
24 #ifndef _SDL_lowvideo_h | |
25 #define _SDL_lowvideo_h | |
26 | |
1433
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
27 #define WIN32_LEAN_AND_MEAN |
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1402
diff
changeset
|
28 #include <windows.h> |
0 | 29 |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
30 #ifndef SetClassLongPtr |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
31 #define SetClassLongPtr SetClassLong |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
32 #endif |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
33 #ifndef GetWindowLongPtr |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
34 #define GetWindowLongPtr GetWindowLong |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
35 #endif |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
36 #ifndef SetWindowLongPtr |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
37 #define SetWindowLongPtr SetWindowLong |
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
38 #endif |
1472
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1465
diff
changeset
|
39 #ifndef GWLP_WNDPROC |
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1465
diff
changeset
|
40 #define GWLP_WNDPROC GWL_WNDPROC |
4aac8563c296
Fixed more Win64 portability issues
Sam Lantinga <slouken@libsdl.org>
parents:
1465
diff
changeset
|
41 #endif |
3974
42578e98a295
Whoops, fixed previous VC6 support patch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1523
diff
changeset
|
42 #ifndef GWLP_HINSTANCE |
42578e98a295
Whoops, fixed previous VC6 support patch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1523
diff
changeset
|
43 #define GWLP_HINSTANCE GWL_HINSTANCE |
42578e98a295
Whoops, fixed previous VC6 support patch.
Ryan C. Gordon <icculus@icculus.org>
parents:
1523
diff
changeset
|
44 #endif |
1481 | 45 #ifndef GCLP_HICON |
46 #define GCLP_HICON GCL_HICON | |
47 #endif | |
1465
8dfa9a6d69a5
Updated WinCE support by Dmitry (with some tweaks)
Sam Lantinga <slouken@libsdl.org>
parents:
1433
diff
changeset
|
48 |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1336
diff
changeset
|
49 #include "../SDL_sysvideo.h" |
0 | 50 |
51 /* Hidden "this" pointer for the video functions */ | |
52 #define _THIS SDL_VideoDevice *this | |
53 | |
4167 | 54 #define FULLSCREEN() \ |
55 ((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) | |
56 | |
304
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
57 #define WINDIB_FULLSCREEN() \ |
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
58 ( \ |
335
bc4d50d2edd9
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
325
diff
changeset
|
59 SDL_VideoSurface && \ |
4167 | 60 FULLSCREEN() && \ |
304
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
61 (((SDL_VideoSurface->flags & SDL_OPENGL ) == SDL_OPENGL ) || \ |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
62 ((SDL_strcmp(this->name, "windib") == 0) || \ |
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
63 (SDL_strcmp(this->name, "gapi") == 0))) \ |
304
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
64 ) |
13
e30a8ce27c22
Fixed double-mouse event bug on Windows using OpenGL
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
65 #define DDRAW_FULLSCREEN() \ |
0 | 66 ( \ |
335
bc4d50d2edd9
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
325
diff
changeset
|
67 SDL_VideoSurface && \ |
4167 | 68 FULLSCREEN() && \ |
0 | 69 ((SDL_VideoSurface->flags & SDL_OPENGL ) != SDL_OPENGL ) && \ |
1336
3692456e7b0f
Use SDL_ prefixed versions of C library functions.
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
70 (SDL_strcmp(this->name, "directx") == 0) \ |
0 | 71 ) |
72 | |
4167 | 73 #define DINPUT_FULLSCREEN() \ |
74 ( \ | |
75 FULLSCREEN() && \ | |
76 (strcmp(this->name, "directx") == 0) \ | |
77 ) | |
78 | |
79 #define DINPUT() (strcmp(this->name, "directx") == 0) | |
13
e30a8ce27c22
Fixed double-mouse event bug on Windows using OpenGL
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
80 |
0 | 81 /* The main window -- and a function to set it for the audio */ |
453
a6fa62b1be09
Updated for embedded Visual C++ 4.0
Sam Lantinga <slouken@libsdl.org>
parents:
338
diff
changeset
|
82 #ifdef _WIN32_WCE |
a6fa62b1be09
Updated for embedded Visual C++ 4.0
Sam Lantinga <slouken@libsdl.org>
parents:
338
diff
changeset
|
83 extern LPWSTR SDL_Appname; |
a6fa62b1be09
Updated for embedded Visual C++ 4.0
Sam Lantinga <slouken@libsdl.org>
parents:
338
diff
changeset
|
84 #else |
a6fa62b1be09
Updated for embedded Visual C++ 4.0
Sam Lantinga <slouken@libsdl.org>
parents:
338
diff
changeset
|
85 extern LPSTR SDL_Appname; |
a6fa62b1be09
Updated for embedded Visual C++ 4.0
Sam Lantinga <slouken@libsdl.org>
parents:
338
diff
changeset
|
86 #endif |
0 | 87 extern HINSTANCE SDL_Instance; |
88 extern HWND SDL_Window; | |
1280
f61f045343d3
Re-query the SDL_WINDOWID each time we initialize the video
Sam Lantinga <slouken@libsdl.org>
parents:
1253
diff
changeset
|
89 extern BOOL SDL_windowid; |
0 | 90 |
91 /* Variables and functions exported to other parts of the native video | |
92 subsystem (SDL_sysevents.c) | |
93 */ | |
1523 | 94 extern void WIN_FlushMessageQueue(); |
95 | |
3992 | 96 /* Called by windows message loop when application is activated */ |
97 extern void (*WIN_Activate)(_THIS, BOOL active, BOOL minimized); | |
98 | |
0 | 99 /* Called by windows message loop when system palette is available */ |
100 extern void (*WIN_RealizePalette)(_THIS); | |
101 | |
102 /* Called by windows message loop when the system palette changes */ | |
103 extern void (*WIN_PaletteChanged)(_THIS, HWND window); | |
104 | |
105 /* Called by windows message loop when a portion of the screen needs update */ | |
106 extern void (*WIN_WinPAINT)(_THIS, HDC hdc); | |
107 | |
108 /* Called by windows message loop when the message isn't handled */ | |
109 extern LONG (*HandleMessage)(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); | |
110 | |
111 /* The window cursor (from SDL_sysmouse.c) */ | |
112 extern HCURSOR SDL_hcursor; | |
113 | |
114 /* The bounds of the window in screen coordinates */ | |
115 extern RECT SDL_bounds; | |
116 | |
833
31fa08b36380
Added support for SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
117 /* The position of the window in windowed mode */ |
31fa08b36380
Added support for SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
118 extern int SDL_windowX; |
31fa08b36380
Added support for SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
119 extern int SDL_windowY; |
31fa08b36380
Added support for SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED on Windows
Sam Lantinga <slouken@libsdl.org>
parents:
769
diff
changeset
|
120 |
0 | 121 /* Flag -- SDL is performing a resize, rather than the user */ |
122 extern int SDL_resizing; | |
123 | |
124 /* Flag -- the mouse is in relative motion mode */ | |
125 extern int mouse_relative; | |
126 | |
304
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
127 /* The GDI fullscreen mode currently active */ |
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
128 #ifndef NO_CHANGEDISPLAYSETTINGS |
1295
c3e36ac8a94c
Date: Sun, 6 Mar 2005 17:06:20 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
1280
diff
changeset
|
129 extern DEVMODE SDL_desktop_mode; |
304
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
130 extern DEVMODE SDL_fullscreen_mode; |
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
131 #endif |
ec53caed9fb2
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
297
diff
changeset
|
132 |
338
518ffd98a8f6
Fixed gamma ramps in DirectX windowed and OpenGL modes
Sam Lantinga <slouken@libsdl.org>
parents:
335
diff
changeset
|
133 /* The system gamma ramp for GDI modes */ |
518ffd98a8f6
Fixed gamma ramps in DirectX windowed and OpenGL modes
Sam Lantinga <slouken@libsdl.org>
parents:
335
diff
changeset
|
134 extern WORD *gamma_saved; |
518ffd98a8f6
Fixed gamma ramps in DirectX windowed and OpenGL modes
Sam Lantinga <slouken@libsdl.org>
parents:
335
diff
changeset
|
135 |
0 | 136 /* This is really from SDL_dx5audio.c */ |
137 extern void DX5_SoundFocus(HWND window); | |
138 | |
145
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
13
diff
changeset
|
139 /* DJM: This is really from SDL_sysevents.c, we need it in |
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
13
diff
changeset
|
140 GDL_CreateWindow as well */ |
1481 | 141 LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); |
145
29a638dc26db
Applied David MacCormack's patch to fix SDL_WINDOWID on Windows,
Sam Lantinga <slouken@libsdl.org>
parents:
13
diff
changeset
|
142 |
1253
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
143 /* JFP: Implementation of ToUnicode() that works on 9x/ME/2K/XP */ |
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
144 typedef int (WINAPI *ToUnicodeFN)(UINT, UINT, PBYTE, LPWSTR, int, UINT); |
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
145 |
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
146 extern ToUnicodeFN SDL_ToUnicode; |
7c7ddaf195bf
Implemented ToUnicode() support on Windows 95/98/ME/NT/2000/XP
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
147 |
0 | 148 #endif /* SDL_lowvideo_h */ |