author | truelight |
Mon, 23 Jul 2007 16:39:27 +0000 | |
changeset 7310 | eed5036fee1f |
parent 7170 | 923946ec324f |
child 7311 | fde7a4d92a39 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
3 |
#include "../stdafx.h" |
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
4 |
#include "../openttd.h" |
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
5 |
#include "../functions.h" |
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
6 |
#include "../gfx.h" |
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
7 |
#include "../macros.h" |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5377
diff
changeset
|
8 |
#include "../network/network.h" |
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
9 |
#include "../variables.h" |
2207
be1ef1e1fc58
(svn r2725) Move MyShowCursor() back into win32.c, it fits better there
tron
parents:
2189
diff
changeset
|
10 |
#include "../win32.h" |
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
11 |
#include "../window.h" |
6939
2f865906b933
(svn r10192) -Fix r10190: forgot to change the includes of win32 and cocoa video-driver
truelight
parents:
6937
diff
changeset
|
12 |
#include "../blitter/factory.hpp" |
2189
5cdc11ffeaa4
(svn r2704) Remove . from include path again, too much trouble. Also add some #ifdefs and #includes for the Windows build
tron
parents:
2186
diff
changeset
|
13 |
#include "win32_v.h" |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
14 |
#include <windows.h> |
5168
e206899169c4
(svn r7278) -Codechange: [win32] Add UNICODE support so it should compile on OS's using UNICODE
Darkvater
parents:
5112
diff
changeset
|
15 |
#include <tchar.h> |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
16 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
17 |
static struct { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
18 |
HWND main_wnd; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
19 |
HBITMAP dib_sect; |
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
20 |
void *buffer_bits; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
21 |
HPALETTE gdi_palette; |
4489 | 22 |
int width; |
23 |
int height; |
|
24 |
int width_org; |
|
25 |
int height_org; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
26 |
bool fullscreen; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
27 |
bool has_focus; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
28 |
bool running; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
29 |
} _wnd; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
30 |
|
3051
6a9ddcac6d56
(svn r3640) - Remove win32-only variables from variables.h and put them into win32_v.c. Also ifdef the win32 specific configuration file settings.
Darkvater
parents:
2952
diff
changeset
|
31 |
bool _force_full_redraw; |
4258
087d44b3514f
(svn r5874) -Feature [FS#234]: Remember the maximized state and restore on start. This also fixes a bug where a different resolution is chosen for a maximized window, but it retains the maximized flag. Only win32.
Darkvater
parents:
4077
diff
changeset
|
32 |
bool _window_maximize; |
3051
6a9ddcac6d56
(svn r3640) - Remove win32-only variables from variables.h and put them into win32_v.c. Also ifdef the win32 specific configuration file settings.
Darkvater
parents:
2952
diff
changeset
|
33 |
uint _display_hz; |
6a9ddcac6d56
(svn r3640) - Remove win32-only variables from variables.h and put them into win32_v.c. Also ifdef the win32 specific configuration file settings.
Darkvater
parents:
2952
diff
changeset
|
34 |
uint _fullscreen_bpp; |
5020
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
35 |
static uint16 _bck_resolution[2]; |
6251
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
36 |
#if !defined(UNICODE) |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
37 |
uint _codepage; |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
38 |
#endif |
3051
6a9ddcac6d56
(svn r3640) - Remove win32-only variables from variables.h and put them into win32_v.c. Also ifdef the win32 specific configuration file settings.
Darkvater
parents:
2952
diff
changeset
|
39 |
|
6247 | 40 |
static void MakePalette() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
41 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
42 |
LOGPALETTE *pal; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
43 |
uint i; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
44 |
|
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6277
diff
changeset
|
45 |
pal = (LOGPALETTE*)alloca(sizeof(LOGPALETTE) + (256 - 1) * sizeof(PALETTEENTRY)); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
46 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
47 |
pal->palVersion = 0x300; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
48 |
pal->palNumEntries = 256; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
49 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
50 |
for (i = 0; i != 256; i++) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
51 |
pal->palPalEntry[i].peRed = _cur_palette[i].r; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
52 |
pal->palPalEntry[i].peGreen = _cur_palette[i].g; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
53 |
pal->palPalEntry[i].peBlue = _cur_palette[i].b; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
54 |
pal->palPalEntry[i].peFlags = 0; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
55 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
56 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
57 |
_wnd.gdi_palette = CreatePalette(pal); |
4489 | 58 |
if (_wnd.gdi_palette == NULL) error("CreatePalette failed!\n"); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
59 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
60 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
61 |
static void UpdatePalette(HDC dc, uint start, uint count) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
62 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
63 |
RGBQUAD rgb[256]; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
64 |
uint i; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
65 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
66 |
for (i = 0; i != count; i++) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
67 |
rgb[i].rgbRed = _cur_palette[start + i].r; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
68 |
rgb[i].rgbGreen = _cur_palette[start + i].g; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
69 |
rgb[i].rgbBlue = _cur_palette[start + i].b; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
70 |
rgb[i].rgbReserved = 0; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
71 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
72 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
73 |
SetDIBColorTable(dc, start, count, rgb); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
74 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
75 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
76 |
struct VkMapping { |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
77 |
byte vk_from; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
78 |
byte vk_count; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
79 |
byte map_to; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
80 |
}; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
81 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
82 |
#define AS(x, z) {x, 0, z} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
83 |
#define AM(x, y, z, w) {x, y - x, z} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
84 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
85 |
static const VkMapping _vk_mapping[] = { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
86 |
// Pageup stuff + up/down |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
87 |
AM(VK_PRIOR,VK_DOWN, WKC_PAGEUP, WKC_DOWN), |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
88 |
// Map letters & digits |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
89 |
AM('A','Z','A','Z'), |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
90 |
AM('0','9','0','9'), |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
91 |
|
4434
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
92 |
AS(VK_ESCAPE, WKC_ESC), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
93 |
AS(VK_PAUSE, WKC_PAUSE), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
94 |
AS(VK_BACK, WKC_BACKSPACE), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
95 |
AM(VK_INSERT, VK_DELETE, WKC_INSERT, WKC_DELETE), |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
96 |
|
4434
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
97 |
AS(VK_SPACE, WKC_SPACE), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
98 |
AS(VK_RETURN, WKC_RETURN), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
99 |
AS(VK_TAB, WKC_TAB), |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
100 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
101 |
// Function keys |
4434
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
102 |
AM(VK_F1, VK_F12, WKC_F1, WKC_F12), |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
103 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
104 |
// Numeric part. |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
105 |
// What is the virtual keycode for numeric enter?? |
4434
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
106 |
AM(VK_NUMPAD0, VK_NUMPAD9, WKC_NUM_0, WKC_NUM_9), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
107 |
AS(VK_DIVIDE, WKC_NUM_DIV), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
108 |
AS(VK_MULTIPLY, WKC_NUM_MUL), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
109 |
AS(VK_SUBTRACT, WKC_NUM_MINUS), |
a08cb4b5c179
(svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents:
4300
diff
changeset
|
110 |
AS(VK_ADD, WKC_NUM_PLUS), |
7310
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
111 |
AS(VK_DECIMAL, WKC_NUM_DECIMAL), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
112 |
|
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
113 |
// Other non-letter keys |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
114 |
AS(0xBF, WKC_SLASH), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
115 |
AS(0xBA, WKC_SEMICOLON), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
116 |
AS(0xBB, WKC_EQUALS), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
117 |
AS(0xDB, WKC_L_BRACKET), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
118 |
AS(0xDC, WKC_BACKSLASH), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
119 |
AS(0xDD, WKC_R_BRACKET), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
120 |
|
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
121 |
AS(0xDE, WKC_SINGLEQUOTE), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
122 |
AS(0xBC, WKC_COMMA), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
123 |
AS(0xBD, WKC_MINUS), |
eed5036fee1f
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7170
diff
changeset
|
124 |
AS(0xBE, WKC_PERIOD) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
125 |
}; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
126 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
127 |
static uint MapWindowsKey(uint sym) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
128 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
129 |
const VkMapping *map; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
130 |
uint key = 0; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
131 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
132 |
for (map = _vk_mapping; map != endof(_vk_mapping); ++map) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
133 |
if ((uint)(sym - map->vk_from) <= map->vk_count) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
134 |
key = sym - map->vk_from + map->map_to; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
135 |
break; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
136 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
137 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
138 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
139 |
if (GetAsyncKeyState(VK_SHIFT) < 0) key |= WKC_SHIFT; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
140 |
if (GetAsyncKeyState(VK_CONTROL) < 0) key |= WKC_CTRL; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
141 |
if (GetAsyncKeyState(VK_MENU) < 0) key |= WKC_ALT; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
142 |
return key; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
143 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
144 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
145 |
static bool AllocateDibSection(int w, int h); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
146 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
147 |
static void ClientSizeChanged(int w, int h) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
148 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
149 |
// allocate new dib section of the new size |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
150 |
if (AllocateDibSection(w, h)) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
151 |
// mark all palette colors dirty |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
152 |
_pal_first_dirty = 0; |
6960
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
153 |
_pal_count_dirty = 255; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
154 |
GameSizeChanged(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
155 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
156 |
// redraw screen |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
157 |
if (_wnd.running) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
158 |
_screen.dst_ptr = _wnd.buffer_bits; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
159 |
UpdateWindows(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
160 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
161 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
162 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
163 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
164 |
#ifdef _DEBUG |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
165 |
// Keep this function here.. |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
166 |
// It allows you to redraw the screen from within the MSVC debugger |
6247 | 167 |
int RedrawScreenDebug() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
168 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
169 |
HDC dc,dc2; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
170 |
static int _fooctr; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
171 |
HBITMAP old_bmp; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
172 |
HPALETTE old_palette; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
173 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
174 |
_screen.dst_ptr = _wnd.buffer_bits; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
175 |
UpdateWindows(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
176 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
177 |
dc = GetDC(_wnd.main_wnd); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
178 |
dc2 = CreateCompatibleDC(dc); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
179 |
|
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
180 |
old_bmp = (HBITMAP)SelectObject(dc2, _wnd.dib_sect); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
181 |
old_palette = SelectPalette(dc, _wnd.gdi_palette, FALSE); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
182 |
BitBlt(dc, 0, 0, _wnd.width, _wnd.height, dc2, 0, 0, SRCCOPY); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
183 |
SelectPalette(dc, old_palette, TRUE); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
184 |
SelectObject(dc2, old_bmp); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
185 |
DeleteDC(dc2); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
186 |
ReleaseDC(_wnd.main_wnd, dc); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
187 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
188 |
return _fooctr++; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
189 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
190 |
#endif |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
191 |
|
5021
6fb82e055ceb
(svn r7062) -[win32] Codechange: Remove unneeded WM_MOUSEENTER event, and change mouse behaviour
Darkvater
parents:
5020
diff
changeset
|
192 |
/* Windows 95 will not have a WM_MOUSELEAVE message, so define it if needed */ |
3312
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
193 |
#if !defined(WM_MOUSELEAVE) |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
194 |
#define WM_MOUSELEAVE 0x02A3 |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
195 |
#endif |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
196 |
#define TID_POLLMOUSE 1 |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
197 |
#define MOUSE_POLL_DELAY 75 |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
198 |
|
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
199 |
static void CALLBACK TrackMouseTimerProc(HWND hwnd, UINT msg, UINT event, DWORD time) |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
200 |
{ |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
201 |
RECT rc; |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
202 |
POINT pt; |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
203 |
|
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
204 |
/* Get the rectangle of our window and translate it to screen coordinates. |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
205 |
* Compare this with the current screen coordinates of the mouse and if it |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
206 |
* falls outside of the area or our window we have left the window. */ |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
207 |
GetClientRect(hwnd, &rc); |
3802
e3f0d57cc358
(svn r4810) - Fix: removed warning about strict-alias (release build)
glx
parents:
3325
diff
changeset
|
208 |
MapWindowPoints(hwnd, HWND_DESKTOP, (LPPOINT)(LPRECT)&rc, 2); |
3312
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
209 |
GetCursorPos(&pt); |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
210 |
|
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
211 |
if (!PtInRect(&rc, pt) || (WindowFromPoint(pt) != hwnd)) { |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
212 |
KillTimer(hwnd, event); |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
213 |
PostMessage(hwnd, WM_MOUSELEAVE, 0, 0L); |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
214 |
} |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
215 |
} |
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
216 |
|
6995
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
217 |
static void MakeWindow(bool full_screen) |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
218 |
{ |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
219 |
_fullscreen = full_screen; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
220 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
221 |
// recreate window? |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
222 |
if ((full_screen || _wnd.fullscreen) && _wnd.main_wnd) { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
223 |
DestroyWindow(_wnd.main_wnd); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
224 |
_wnd.main_wnd = 0; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
225 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
226 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
227 |
#if defined(WINCE) |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
228 |
/* WinCE is always fullscreen */ |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
229 |
#else |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
230 |
if (full_screen) { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
231 |
DEVMODE settings; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
232 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
233 |
/* Make sure we are always at least the screen-depth of the blitter */ |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
234 |
if (_fullscreen_bpp < BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth()) _fullscreen_bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
235 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
236 |
memset(&settings, 0, sizeof(settings)); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
237 |
settings.dmSize = sizeof(settings); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
238 |
settings.dmFields = |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
239 |
(_fullscreen_bpp != 0 ? DM_BITSPERPEL : 0) | |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
240 |
DM_PELSWIDTH | |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
241 |
DM_PELSHEIGHT | |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
242 |
(_display_hz != 0 ? DM_DISPLAYFREQUENCY : 0); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
243 |
settings.dmBitsPerPel = _fullscreen_bpp; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
244 |
settings.dmPelsWidth = _wnd.width_org; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
245 |
settings.dmPelsHeight = _wnd.height_org; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
246 |
settings.dmDisplayFrequency = _display_hz; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
247 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
248 |
if (ChangeDisplaySettings(&settings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
249 |
MakeWindow(false); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
250 |
return; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
251 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
252 |
} else if (_wnd.fullscreen) { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
253 |
// restore display? |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
254 |
ChangeDisplaySettings(NULL, 0); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
255 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
256 |
#endif |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
257 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
258 |
{ |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
259 |
RECT r; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
260 |
DWORD style, showstyle; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
261 |
int x, y, w, h; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
262 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
263 |
showstyle = SW_SHOWNORMAL; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
264 |
_wnd.fullscreen = full_screen; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
265 |
if (_wnd.fullscreen) { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
266 |
style = WS_POPUP; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
267 |
SetRect(&r, 0, 0, _wnd.width_org, _wnd.height_org); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
268 |
} else { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
269 |
style = WS_OVERLAPPEDWINDOW; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
270 |
/* On window creation, check if we were in maximize mode before */ |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
271 |
if (_window_maximize) showstyle = SW_SHOWMAXIMIZED; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
272 |
SetRect(&r, 0, 0, _wnd.width, _wnd.height); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
273 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
274 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
275 |
#if !defined(WINCE) |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
276 |
AdjustWindowRect(&r, style, FALSE); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
277 |
#endif |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
278 |
w = r.right - r.left; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
279 |
h = r.bottom - r.top; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
280 |
x = (GetSystemMetrics(SM_CXSCREEN) - w) / 2; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
281 |
y = (GetSystemMetrics(SM_CYSCREEN) - h) / 2; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
282 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
283 |
if (_wnd.main_wnd) { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
284 |
ShowWindow(_wnd.main_wnd, SW_SHOWNORMAL); // remove maximize-flag |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
285 |
SetWindowPos(_wnd.main_wnd, 0, x, y, w, h, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
286 |
} else { |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
287 |
extern const char _openttd_revision[]; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
288 |
TCHAR Windowtitle[50]; |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
289 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
290 |
_sntprintf(Windowtitle, sizeof(Windowtitle), _T("OpenTTD %s"), MB_TO_WIDE(_openttd_revision)); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
291 |
|
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
292 |
_wnd.main_wnd = CreateWindow(_T("OTTD"), Windowtitle, style, x, y, w, h, 0, 0, GetModuleHandle(NULL), 0); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
293 |
if (_wnd.main_wnd == NULL) error("CreateWindow failed"); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
294 |
ShowWindow(_wnd.main_wnd, showstyle); |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
295 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
296 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
297 |
GameSizeChanged(); // invalidate all windows, force redraw |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
298 |
} |
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
299 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
300 |
static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
301 |
{ |
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
302 |
static uint32 keycode = 0; |
6539
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
303 |
static bool console = false; |
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
304 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
305 |
switch (msg) { |
4489 | 306 |
case WM_CREATE: |
307 |
SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, (TIMERPROC)TrackMouseTimerProc); |
|
308 |
break; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
309 |
|
4489 | 310 |
case WM_PAINT: { |
311 |
PAINTSTRUCT ps; |
|
312 |
HDC dc,dc2; |
|
313 |
HBITMAP old_bmp; |
|
314 |
HPALETTE old_palette; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
315 |
|
4489 | 316 |
BeginPaint(hwnd, &ps); |
317 |
dc = ps.hdc; |
|
318 |
dc2 = CreateCompatibleDC(dc); |
|
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
319 |
old_bmp = (HBITMAP)SelectObject(dc2, _wnd.dib_sect); |
4489 | 320 |
old_palette = SelectPalette(dc, _wnd.gdi_palette, FALSE); |
3312
d28f88dc5587
(svn r4075) - Feature: Undraw the mouse when it leaves the window and Draw it again when it enters. Added both for WIN32 and SDL. Since Win95 has troubles with TrackMouseEvent(), this function was just simply rewritten which was the easiest. Based on a patch by DmitryKo.
Darkvater
parents:
3285
diff
changeset
|
321 |
|
6960
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
322 |
if (_pal_count_dirty != 0) { |
6961
8e5217fd71f4
(svn r10217) -Fix r10216: forgot to declare 'blitter' in win32 and cocoa driver (tnx glx)
truelight
parents:
6960
diff
changeset
|
323 |
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); |
8e5217fd71f4
(svn r10217) -Fix r10216: forgot to declare 'blitter' in win32 and cocoa driver (tnx glx)
truelight
parents:
6960
diff
changeset
|
324 |
|
6960
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
325 |
switch (blitter->UsePaletteAnimation()) { |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
326 |
case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND: |
6962 | 327 |
UpdatePalette(dc2, _pal_first_dirty, _pal_count_dirty); |
6960
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
328 |
break; |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
329 |
|
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
330 |
case Blitter::PALETTE_ANIMATION_BLITTER: |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
331 |
blitter->PaletteAnimate(_pal_first_dirty, _pal_count_dirty); |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
332 |
break; |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
333 |
|
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
334 |
case Blitter::PALETTE_ANIMATION_NONE: |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
335 |
break; |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
336 |
|
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
337 |
default: |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
338 |
NOT_REACHED(); |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
339 |
} |
356d856462b6
(svn r10216) -Fix: palette animation always redid all palette entries, where in fact only a few indexes were needed
truelight
parents:
6939
diff
changeset
|
340 |
_pal_count_dirty = 0; |
4489 | 341 |
} |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
342 |
|
4489 | 343 |
BitBlt(dc, 0, 0, _wnd.width, _wnd.height, dc2, 0, 0, SRCCOPY); |
344 |
SelectPalette(dc, old_palette, TRUE); |
|
345 |
SelectObject(dc2, old_bmp); |
|
346 |
DeleteDC(dc2); |
|
347 |
EndPaint(hwnd, &ps); |
|
348 |
return 0; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
349 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
350 |
|
4489 | 351 |
case WM_PALETTECHANGED: |
352 |
if ((HWND)wParam == hwnd) return 0; |
|
353 |
/* FALLTHROUGH */ |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
354 |
|
4489 | 355 |
case WM_QUERYNEWPALETTE: { |
356 |
HDC hDC = GetWindowDC(hwnd); |
|
357 |
HPALETTE hOldPalette = SelectPalette(hDC, _wnd.gdi_palette, FALSE); |
|
358 |
UINT nChanged = RealizePalette(hDC); |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
359 |
|
4489 | 360 |
SelectPalette(hDC, hOldPalette, TRUE); |
361 |
ReleaseDC(hwnd, hDC); |
|
362 |
if (nChanged) InvalidateRect(hwnd, NULL, FALSE); |
|
363 |
return 0; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
364 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
365 |
|
4489 | 366 |
case WM_CLOSE: |
4548
6165e12570bf
(svn r6380) -Codechange: unify all ways to quit OTTD.
rubidium
parents:
4536
diff
changeset
|
367 |
HandleExitGameRequest(); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
368 |
return 0; |
4489 | 369 |
|
5020
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
370 |
case WM_DESTROY: |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
371 |
if (_window_maximize) { |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
372 |
_cur_resolution[0] = _bck_resolution[0]; |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
373 |
_cur_resolution[1] = _bck_resolution[1]; |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
374 |
} |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
375 |
return 0; |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
376 |
|
4489 | 377 |
case WM_LBUTTONDOWN: |
378 |
SetCapture(hwnd); |
|
379 |
_left_button_down = true; |
|
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
380 |
HandleMouseEvents(); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
381 |
return 0; |
4489 | 382 |
|
383 |
case WM_LBUTTONUP: |
|
384 |
ReleaseCapture(); |
|
385 |
_left_button_down = false; |
|
386 |
_left_button_clicked = false; |
|
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
387 |
HandleMouseEvents(); |
4489 | 388 |
return 0; |
389 |
||
390 |
case WM_RBUTTONDOWN: |
|
391 |
SetCapture(hwnd); |
|
392 |
_right_button_down = true; |
|
393 |
_right_button_clicked = true; |
|
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
394 |
HandleMouseEvents(); |
4489 | 395 |
return 0; |
396 |
||
397 |
case WM_RBUTTONUP: |
|
398 |
ReleaseCapture(); |
|
399 |
_right_button_down = false; |
|
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
400 |
HandleMouseEvents(); |
4489 | 401 |
return 0; |
402 |
||
403 |
case WM_MOUSELEAVE: |
|
404 |
UndrawMouseCursor(); |
|
405 |
_cursor.in_window = false; |
|
5021
6fb82e055ceb
(svn r7062) -[win32] Codechange: Remove unneeded WM_MOUSEENTER event, and change mouse behaviour
Darkvater
parents:
5020
diff
changeset
|
406 |
|
6fb82e055ceb
(svn r7062) -[win32] Codechange: Remove unneeded WM_MOUSEENTER event, and change mouse behaviour
Darkvater
parents:
5020
diff
changeset
|
407 |
if (!_left_button_down && !_right_button_down) MyShowCursor(true); |
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
408 |
HandleMouseEvents(); |
5021
6fb82e055ceb
(svn r7062) -[win32] Codechange: Remove unneeded WM_MOUSEENTER event, and change mouse behaviour
Darkvater
parents:
5020
diff
changeset
|
409 |
return 0; |
4489 | 410 |
|
411 |
case WM_MOUSEMOVE: { |
|
412 |
int x = (int16)LOWORD(lParam); |
|
413 |
int y = (int16)HIWORD(lParam); |
|
414 |
POINT pt; |
|
415 |
||
416 |
/* If the mouse was not in the window and it has moved it means it has |
|
5021
6fb82e055ceb
(svn r7062) -[win32] Codechange: Remove unneeded WM_MOUSEENTER event, and change mouse behaviour
Darkvater
parents:
5020
diff
changeset
|
417 |
* come into the window, so start drawing the mouse. Also start |
4489 | 418 |
* tracking the mouse for exiting the window */ |
419 |
if (!_cursor.in_window) { |
|
420 |
_cursor.in_window = true; |
|
421 |
SetTimer(hwnd, TID_POLLMOUSE, MOUSE_POLL_DELAY, (TIMERPROC)TrackMouseTimerProc); |
|
422 |
||
5021
6fb82e055ceb
(svn r7062) -[win32] Codechange: Remove unneeded WM_MOUSEENTER event, and change mouse behaviour
Darkvater
parents:
5020
diff
changeset
|
423 |
DrawMouseCursor(); |
4489 | 424 |
} |
425 |
||
426 |
if (_cursor.fix_at) { |
|
427 |
int dx = x - _cursor.pos.x; |
|
428 |
int dy = y - _cursor.pos.y; |
|
429 |
if (dx != 0 || dy != 0) { |
|
430 |
_cursor.delta.x += dx; |
|
431 |
_cursor.delta.y += dy; |
|
432 |
||
433 |
pt.x = _cursor.pos.x; |
|
434 |
pt.y = _cursor.pos.y; |
|
435 |
||
436 |
ClientToScreen(hwnd, &pt); |
|
437 |
SetCursorPos(pt.x, pt.y); |
|
438 |
} |
|
439 |
} else { |
|
440 |
_cursor.delta.x += x - _cursor.pos.x; |
|
441 |
_cursor.delta.y += y - _cursor.pos.y; |
|
442 |
_cursor.pos.x = x; |
|
443 |
_cursor.pos.y = y; |
|
444 |
_cursor.dirty = true; |
|
445 |
} |
|
446 |
MyShowCursor(false); |
|
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
447 |
HandleMouseEvents(); |
4489 | 448 |
return 0; |
449 |
} |
|
450 |
||
6251
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
451 |
#if !defined(UNICODE) |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
452 |
case WM_INPUTLANGCHANGE: { |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
453 |
TCHAR locale[6]; |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
454 |
LCID lcid = GB(lParam, 0, 16); |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
455 |
|
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
456 |
int len = GetLocaleInfo(lcid, LOCALE_IDEFAULTANSICODEPAGE, locale, lengthof(locale)); |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
457 |
if (len != 0) _codepage = _ttoi(locale); |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
458 |
return 1; |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
459 |
} |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
460 |
#endif /* UNICODE */ |
2ad87f850eb9
(svn r9055) -Codechange: Change windows unicode handling and allow a pure non-unicode build to function. Win9x binaries will be possible with mingw/nightly system.
Darkvater
parents:
6248
diff
changeset
|
461 |
|
6539
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
462 |
case WM_DEADCHAR: |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
463 |
console = GB(lParam, 16, 8) == 41; |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
464 |
return 0; |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
465 |
|
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
466 |
case WM_CHAR: { |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
467 |
/* Silently drop all non-text messages as those were handled by WM_KEYDOWN */ |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
468 |
if (wParam < VK_SPACE) return 0; |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
469 |
uint scancode = GB(lParam, 16, 8); |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
470 |
uint charcode = wParam; |
4489 | 471 |
|
6539
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
472 |
/* If the console key is a dead-key, we need to press it twice to get a WM_CHAR message. |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
473 |
* But we then get two WM_CHAR messages, so ignore the first one */ |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
474 |
if (console && scancode == 41) { |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
475 |
console = false; |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
476 |
return 0; |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
477 |
} |
71cb3360be11
(svn r9728) -Fix r9086: [win32] For some keyboard layout the 'console' key is a dead-key. It needs to be pressed twice to have an effect but the console is then opened and closed on the 'same' keypress (2 WM_CHAR events). So skip the first WM_CHAR generated to restore the 'console' key functionality.
glx
parents:
6491
diff
changeset
|
478 |
|
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
479 |
#if !defined(UNICODE) |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
480 |
wchar_t w; |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
481 |
int len = MultiByteToWideChar(_codepage, 0, (char*)&charcode, 1, &w, 1); |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
482 |
charcode = len == 1 ? w : 0; |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
483 |
#endif /* UNICODE */ |
4489 | 484 |
|
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
485 |
/* No matter the keyboard layout, we will map the '~' to the console */ |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
486 |
scancode = scancode == 41 ? (int)WKC_BACKQUOTE : keycode; |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
487 |
HandleKeypress(GB(charcode, 0, 16) | (scancode << 16)); |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
488 |
return 0; |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
489 |
} |
4489 | 490 |
|
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
491 |
case WM_KEYDOWN: { |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
492 |
keycode = MapWindowsKey(wParam); |
4489 | 493 |
|
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
494 |
/* Silently drop all text messages as those will be handled by WM_CHAR |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
495 |
* WM_KEYDOWN only handles CTRL+ commands and special keys like VK_LEFT, etc. */ |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
496 |
if (keycode == 0 || (keycode > WKC_PAUSE && GB(keycode, 13, 4) == 0)) return 0; |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
497 |
|
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
498 |
HandleKeypress(0 | (keycode << 16)); |
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
499 |
return 0; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
500 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
501 |
|
4489 | 502 |
case WM_SYSKEYDOWN: /* user presses F10 or Alt, both activating the title-menu */ |
503 |
switch (wParam) { |
|
504 |
case VK_RETURN: |
|
505 |
case 'F': /* Full Screen on ALT + ENTER/F */ |
|
506 |
ToggleFullScreen(!_wnd.fullscreen); |
|
507 |
return 0; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
508 |
|
4489 | 509 |
case VK_MENU: /* Just ALT */ |
510 |
return 0; // do nothing |
|
511 |
||
512 |
case VK_F10: /* F10, ignore activation of menu */ |
|
5086
386ba9fe0621
(svn r7153) -Fix [FS#279]: Some keyboard events possibly lost under high CPU load, handle
Darkvater
parents:
5076
diff
changeset
|
513 |
HandleKeypress(MapWindowsKey(wParam) << 16); |
4489 | 514 |
return 0; |
515 |
||
516 |
default: /* ALT in combination with something else */ |
|
5086
386ba9fe0621
(svn r7153) -Fix [FS#279]: Some keyboard events possibly lost under high CPU load, handle
Darkvater
parents:
5076
diff
changeset
|
517 |
HandleKeypress(MapWindowsKey(wParam) << 16); |
4489 | 518 |
break; |
519 |
} |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
520 |
break; |
4489 | 521 |
|
522 |
case WM_SIZE: |
|
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
523 |
if (wParam != SIZE_MINIMIZED) { |
5019
9046723a0878
(svn r7060) -Fix (r5874): Restore of window maximized state not always working (Mart3p) . Remember
Darkvater
parents:
4840
diff
changeset
|
524 |
/* Set maximized flag when we maximize (obviously), but also when we |
9046723a0878
(svn r7060) -Fix (r5874): Restore of window maximized state not always working (Mart3p) . Remember
Darkvater
parents:
4840
diff
changeset
|
525 |
* switched to fullscreen from a maximized state */ |
9046723a0878
(svn r7060) -Fix (r5874): Restore of window maximized state not always working (Mart3p) . Remember
Darkvater
parents:
4840
diff
changeset
|
526 |
_window_maximize = (wParam == SIZE_MAXIMIZED || (_window_maximize && _fullscreen)); |
5020
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
527 |
if (_window_maximize) { |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
528 |
_bck_resolution[0] = _cur_resolution[0]; |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
529 |
_bck_resolution[1] = _cur_resolution[1]; |
e2564f4400b7
(svn r7061) -[win32] Feature: Remember the window size between restarts when quit in fullscreen mode.
Darkvater
parents:
5019
diff
changeset
|
530 |
} |
4489 | 531 |
ClientSizeChanged(LOWORD(lParam), HIWORD(lParam)); |
532 |
} |
|
533 |
return 0; |
|
534 |
||
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
535 |
#if !defined(WINCE) |
4489 | 536 |
case WM_SIZING: { |
537 |
RECT* r = (RECT*)lParam; |
|
538 |
RECT r2; |
|
539 |
int w, h; |
|
540 |
||
541 |
SetRect(&r2, 0, 0, 0, 0); |
|
542 |
AdjustWindowRect(&r2, GetWindowLong(hwnd, GWL_STYLE), FALSE); |
|
543 |
||
544 |
w = r->right - r->left - (r2.right - r2.left); |
|
545 |
h = r->bottom - r->top - (r2.bottom - r2.top); |
|
546 |
w = clamp(w, 64, MAX_SCREEN_WIDTH); |
|
547 |
h = clamp(h, 64, MAX_SCREEN_HEIGHT); |
|
548 |
SetRect(&r2, 0, 0, w, h); |
|
549 |
||
550 |
AdjustWindowRect(&r2, GetWindowLong(hwnd, GWL_STYLE), FALSE); |
|
551 |
w = r2.right - r2.left; |
|
552 |
h = r2.bottom - r2.top; |
|
553 |
||
554 |
switch (wParam) { |
|
555 |
case WMSZ_BOTTOM: |
|
556 |
r->bottom = r->top + h; |
|
557 |
break; |
|
558 |
||
559 |
case WMSZ_BOTTOMLEFT: |
|
560 |
r->bottom = r->top + h; |
|
561 |
r->left = r->right - w; |
|
562 |
break; |
|
563 |
||
564 |
case WMSZ_BOTTOMRIGHT: |
|
565 |
r->bottom = r->top + h; |
|
566 |
r->right = r->left + w; |
|
567 |
break; |
|
568 |
||
569 |
case WMSZ_LEFT: |
|
570 |
r->left = r->right - w; |
|
571 |
break; |
|
572 |
||
573 |
case WMSZ_RIGHT: |
|
574 |
r->right = r->left + w; |
|
575 |
break; |
|
576 |
||
577 |
case WMSZ_TOP: |
|
578 |
r->top = r->bottom - h; |
|
579 |
break; |
|
580 |
||
581 |
case WMSZ_TOPLEFT: |
|
582 |
r->top = r->bottom - h; |
|
583 |
r->left = r->right - w; |
|
584 |
break; |
|
585 |
||
586 |
case WMSZ_TOPRIGHT: |
|
587 |
r->top = r->bottom - h; |
|
588 |
r->right = r->left + w; |
|
589 |
break; |
|
590 |
} |
|
591 |
return TRUE; |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
592 |
} |
5759
213aacbe7b07
(svn r8310) -Fix r8309: it is wise to put #endifs in the right place ;)
truelight
parents:
5758
diff
changeset
|
593 |
#endif |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
594 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
595 |
// needed for wheel |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
596 |
#if !defined(WM_MOUSEWHEEL) |
4489 | 597 |
# define WM_MOUSEWHEEL 0x020A |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
598 |
#endif //WM_MOUSEWHEEL |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
599 |
#if !defined(GET_WHEEL_DELTA_WPARAM) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
600 |
# define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD(wparam)) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
601 |
#endif //GET_WHEEL_DELTA_WPARAM |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
602 |
|
4489 | 603 |
case WM_MOUSEWHEEL: { |
604 |
int delta = GET_WHEEL_DELTA_WPARAM(wParam); |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
605 |
|
4489 | 606 |
if (delta < 0) { |
607 |
_cursor.wheel++; |
|
608 |
} else if (delta > 0) { |
|
609 |
_cursor.wheel--; |
|
610 |
} |
|
5090
67446a4104f7
(svn r7157) -Fix [FS#221, SF1168820]: Some mouse events possibly lost under high CPU load, handle
Darkvater
parents:
5089
diff
changeset
|
611 |
HandleMouseEvents(); |
4489 | 612 |
return 0; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
613 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
614 |
|
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
615 |
case WM_SETFOCUS: |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
616 |
_wnd.has_focus = true; |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
617 |
break; |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
618 |
|
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
619 |
case WM_KILLFOCUS: |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
620 |
_wnd.has_focus = false; |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
621 |
break; |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
622 |
|
6933
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
623 |
#if !defined(WINCE) |
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
624 |
case WM_ACTIVATE: { |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
625 |
bool active = (LOWORD(wParam) != WA_INACTIVE); |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
626 |
bool minimized = (HIWORD(wParam) != 0); |
6933
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
627 |
if (_wnd.fullscreen) { |
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
628 |
if (active && minimized) { |
6933
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
629 |
/* Restore the game window */ |
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
630 |
ShowWindow(hwnd, SW_RESTORE); |
6995
dbcd37808b05
(svn r10251) -Fix (r10186, FS#907): alt-tab back into openttd could leave the taskbar visible
glx
parents:
6987
diff
changeset
|
631 |
MakeWindow(true); |
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
632 |
} else if (!active && !minimized) { |
6933
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
633 |
/* Minimise the window and restore desktop */ |
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
634 |
ShowWindow(hwnd, SW_MINIMIZE); |
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
635 |
ChangeDisplaySettings(NULL, 0); |
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
636 |
} |
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
637 |
} |
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
638 |
break; |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
639 |
} |
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
640 |
} |
6933
252b74991781
(svn r10186) -Fix (FS#876): don't mess desktop when using alt-tab (win32)
glx
parents:
6878
diff
changeset
|
641 |
#endif |
7126
6c1f274be84e
(svn r10399) -Fix (FS#962): [Windows] _wnd.has_focus was not properly set after using ALT-TAB
glx
parents:
7019
diff
changeset
|
642 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
643 |
return DefWindowProc(hwnd, msg, wParam, lParam); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
644 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
645 |
|
6247 | 646 |
static void RegisterWndClass() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
647 |
{ |
4489 | 648 |
static bool registered = false; |
649 |
||
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
650 |
if (!registered) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
651 |
HINSTANCE hinst = GetModuleHandle(NULL); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
652 |
WNDCLASS wnd = { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
653 |
0, |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
654 |
WndProcGdi, |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
655 |
0, |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
656 |
0, |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
657 |
hinst, |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
658 |
LoadIcon(hinst, MAKEINTRESOURCE(100)), |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
659 |
LoadCursor(NULL, IDC_ARROW), |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
660 |
0, |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
661 |
0, |
5168
e206899169c4
(svn r7278) -Codechange: [win32] Add UNICODE support so it should compile on OS's using UNICODE
Darkvater
parents:
5112
diff
changeset
|
662 |
_T("OTTD") |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
663 |
}; |
4489 | 664 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
665 |
registered = true; |
4489 | 666 |
if (!RegisterClass(&wnd)) error("RegisterClass failed"); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
667 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
668 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
669 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
670 |
static bool AllocateDibSection(int w, int h) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
671 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
672 |
BITMAPINFO *bi; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
673 |
HDC dc; |
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
674 |
int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
675 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
676 |
w = clamp(w, 64, MAX_SCREEN_WIDTH); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
677 |
h = clamp(h, 64, MAX_SCREEN_HEIGHT); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
678 |
|
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
679 |
if (bpp == 0) error("Can't use a blitter that blits 0 bpp for normal visuals"); |
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
680 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
681 |
if (w == _screen.width && h == _screen.height) |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
682 |
return false; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
683 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
684 |
_screen.width = w; |
6987
9905355583b5
(svn r10243) -Fix: crash when resizing with 32bpp and 'broken' display with 'non-standard' resolutions
glx
parents:
6964
diff
changeset
|
685 |
_screen.pitch = (bpp == 8) ? ALIGN(w, 4) : w; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
686 |
_screen.height = h; |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6277
diff
changeset
|
687 |
bi = (BITMAPINFO*)alloca(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); |
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6277
diff
changeset
|
688 |
memset(bi, 0, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
689 |
bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
690 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
691 |
bi->bmiHeader.biWidth = _wnd.width = w; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
692 |
bi->bmiHeader.biHeight = -(_wnd.height = h); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
693 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
694 |
bi->bmiHeader.biPlanes = 1; |
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
695 |
bi->bmiHeader.biBitCount = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
696 |
bi->bmiHeader.biCompression = BI_RGB; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
697 |
|
4489 | 698 |
if (_wnd.dib_sect) DeleteObject(_wnd.dib_sect); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
699 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
700 |
dc = GetDC(0); |
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
701 |
_wnd.dib_sect = CreateDIBSection(dc, bi, DIB_RGB_COLORS, (VOID**)&_wnd.buffer_bits, NULL, 0); |
4489 | 702 |
if (_wnd.dib_sect == NULL) error("CreateDIBSection failed"); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
703 |
ReleaseDC(0, dc); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
704 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
705 |
return true; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
706 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
707 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
708 |
static const uint16 default_resolutions[][2] = { |
4489 | 709 |
{ 640, 480 }, |
710 |
{ 800, 600 }, |
|
711 |
{ 1024, 768 }, |
|
712 |
{ 1152, 864 }, |
|
713 |
{ 1280, 800 }, |
|
714 |
{ 1280, 960 }, |
|
715 |
{ 1280, 1024 }, |
|
716 |
{ 1400, 1050 }, |
|
717 |
{ 1600, 1200 }, |
|
718 |
{ 1680, 1050 }, |
|
719 |
{ 1920, 1200 } |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
720 |
}; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
721 |
|
6247 | 722 |
static void FindResolutions() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
723 |
{ |
4000
4009d092b306
(svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents:
3802
diff
changeset
|
724 |
uint n = 0; |
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
725 |
#if defined(WINCE) |
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
726 |
/* EnumDisplaySettingsW is only supported in CE 4.2+ */ |
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
727 |
/* XXX -- One might argue that we assume 4.2+ on every system. Then we can use this function safely */ |
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
728 |
#else |
4000
4009d092b306
(svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents:
3802
diff
changeset
|
729 |
uint i; |
5169
cd4113ed34f7
(svn r7279) -Codechange: [win32] Add Windows95/98 support by using MSLU. Only workaround is that the
Darkvater
parents:
5168
diff
changeset
|
730 |
DEVMODEA dm; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
731 |
|
5169
cd4113ed34f7
(svn r7279) -Codechange: [win32] Add Windows95/98 support by using MSLU. Only workaround is that the
Darkvater
parents:
5168
diff
changeset
|
732 |
/* XXX - EnumDisplaySettingsW crashes with unicows.dll on Windows95 |
cd4113ed34f7
(svn r7279) -Codechange: [win32] Add Windows95/98 support by using MSLU. Only workaround is that the
Darkvater
parents:
5168
diff
changeset
|
733 |
* Doesn't really matter since we don't pass a string anyways, but still |
cd4113ed34f7
(svn r7279) -Codechange: [win32] Add Windows95/98 support by using MSLU. Only workaround is that the
Darkvater
parents:
5168
diff
changeset
|
734 |
* a letdown */ |
cd4113ed34f7
(svn r7279) -Codechange: [win32] Add Windows95/98 support by using MSLU. Only workaround is that the
Darkvater
parents:
5168
diff
changeset
|
735 |
for (i = 0; EnumDisplaySettingsA(NULL, i, &dm) != 0; i++) { |
6878
5cefd3ac59c7
(svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents:
6615
diff
changeset
|
736 |
if (dm.dmBitsPerPel == BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() && IS_INT_INSIDE(dm.dmPelsWidth, 640, MAX_SCREEN_WIDTH + 1) && |
4000
4009d092b306
(svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents:
3802
diff
changeset
|
737 |
IS_INT_INSIDE(dm.dmPelsHeight, 480, MAX_SCREEN_HEIGHT + 1)) { |
4009d092b306
(svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents:
3802
diff
changeset
|
738 |
uint j; |
4009d092b306
(svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents:
3802
diff
changeset
|
739 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
740 |
for (j = 0; j < n; j++) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
741 |
if (_resolutions[j][0] == dm.dmPelsWidth && _resolutions[j][1] == dm.dmPelsHeight) break; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
742 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
743 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
744 |
/* In the previous loop we have checked already existing/added resolutions if |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
745 |
* they are the same as the new ones. If this is not the case (j == n); we have |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
746 |
* looped all and found none, add the new one to the list. If we have reached the |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
747 |
* maximum amount of resolutions, then quit querying the display */ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
748 |
if (j == n) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
749 |
_resolutions[j][0] = dm.dmPelsWidth; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
750 |
_resolutions[j][1] = dm.dmPelsHeight; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
751 |
if (++n == lengthof(_resolutions)) break; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
752 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
753 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
754 |
} |
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
755 |
#endif |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
756 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
757 |
/* We have found no resolutions, show the default list */ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
758 |
if (n == 0) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
759 |
memcpy(_resolutions, default_resolutions, sizeof(default_resolutions)); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
760 |
n = lengthof(default_resolutions); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
761 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
762 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
763 |
_num_resolutions = n; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
764 |
SortResolutions(_num_resolutions); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
765 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
766 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
767 |
static FVideoDriver_Win32 iFVideoDriver_Win32; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
768 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
769 |
const char *VideoDriver_Win32::Start(const char * const *parm) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
770 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
771 |
memset(&_wnd, 0, sizeof(_wnd)); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
772 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
773 |
RegisterWndClass(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
774 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
775 |
MakePalette(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
776 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
777 |
FindResolutions(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
778 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
779 |
// fullscreen uses those |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
780 |
_wnd.width_org = _cur_resolution[0]; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
781 |
_wnd.height_org = _cur_resolution[1]; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
782 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
783 |
AllocateDibSection(_cur_resolution[0], _cur_resolution[1]); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
784 |
MarkWholeScreenDirty(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
785 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
786 |
MakeWindow(_fullscreen); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
787 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
788 |
return NULL; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
789 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
790 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
791 |
void VideoDriver_Win32::Stop() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
792 |
{ |
3285
50f77357b94a
(svn r3999) - Fix: [win32] Change the order of DestroyWindow and ChangeDisplay. On some machines a sizechange messagequeue is handled before sending WM_DISPLAYCHANGE resulting in an improper resolution written to the configuration file when exiting from fullscreen. (Frostregen)
Darkvater
parents:
3051
diff
changeset
|
793 |
DeleteObject(_wnd.gdi_palette); |
50f77357b94a
(svn r3999) - Fix: [win32] Change the order of DestroyWindow and ChangeDisplay. On some machines a sizechange messagequeue is handled before sending WM_DISPLAYCHANGE resulting in an improper resolution written to the configuration file when exiting from fullscreen. (Frostregen)
Darkvater
parents:
3051
diff
changeset
|
794 |
DeleteObject(_wnd.dib_sect); |
50f77357b94a
(svn r3999) - Fix: [win32] Change the order of DestroyWindow and ChangeDisplay. On some machines a sizechange messagequeue is handled before sending WM_DISPLAYCHANGE resulting in an improper resolution written to the configuration file when exiting from fullscreen. (Frostregen)
Darkvater
parents:
3051
diff
changeset
|
795 |
DestroyWindow(_wnd.main_wnd); |
50f77357b94a
(svn r3999) - Fix: [win32] Change the order of DestroyWindow and ChangeDisplay. On some machines a sizechange messagequeue is handled before sending WM_DISPLAYCHANGE resulting in an improper resolution written to the configuration file when exiting from fullscreen. (Frostregen)
Darkvater
parents:
3051
diff
changeset
|
796 |
|
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
797 |
#if !defined(WINCE) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
798 |
if (_wnd.fullscreen) ChangeDisplaySettings(NULL, 0); |
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
799 |
#endif |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
800 |
MyShowCursor(true); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
801 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
802 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
803 |
void VideoDriver_Win32::MakeDirty(int left, int top, int width, int height) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
804 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
805 |
RECT r = { left, top, left + width, top + height }; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
806 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
807 |
InvalidateRect(_wnd.main_wnd, &r, FALSE); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
808 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
809 |
|
6247 | 810 |
static void CheckPaletteAnim() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
811 |
{ |
6962 | 812 |
if (_pal_count_dirty == 0) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
813 |
return; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
814 |
InvalidateRect(_wnd.main_wnd, NULL, FALSE); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
815 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
816 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
817 |
void VideoDriver_Win32::MainLoop() |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
818 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
819 |
MSG mesg; |
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
820 |
uint32 cur_ticks = GetTickCount(); |
7018
71e174292e42
(svn r10276) -Codechange: made a counter based on milliseconds and independent of the game-state to base double-click and TGP Generation Process on
truelight
parents:
6999
diff
changeset
|
821 |
uint32 last_cur_ticks = cur_ticks; |
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
822 |
uint32 next_tick = cur_ticks + 30; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
823 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
824 |
_wnd.running = true; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
825 |
|
2952 | 826 |
for (;;) { |
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
827 |
uint32 prev_cur_ticks = cur_ticks; // to check for wrapping |
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
828 |
|
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
829 |
while (PeekMessage(&mesg, NULL, 0, 0, PM_REMOVE)) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
830 |
InteractiveRandom(); // randomness |
6277
58822e8a88b6
(svn r9086) -Feature/Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus.
Darkvater
parents:
6276
diff
changeset
|
831 |
TranslateMessage(&mesg); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
832 |
DispatchMessage(&mesg); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
833 |
} |
2228 | 834 |
if (_exit_game) return; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
835 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
836 |
#if defined(_DEBUG) |
5089
67c761427921
(svn r7156) -Codechange: Remove obsolete variable, localize global variable, use GB and change logic
Darkvater
parents:
5086
diff
changeset
|
837 |
if (_wnd.has_focus && GetAsyncKeyState(VK_SHIFT) < 0 && |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
838 |
#else |
5089
67c761427921
(svn r7156) -Codechange: Remove obsolete variable, localize global variable, use GB and change logic
Darkvater
parents:
5086
diff
changeset
|
839 |
/* Speed up using TAB, but disable for ALT+TAB of course */ |
67c761427921
(svn r7156) -Codechange: Remove obsolete variable, localize global variable, use GB and change logic
Darkvater
parents:
5086
diff
changeset
|
840 |
if (_wnd.has_focus && GetAsyncKeyState(VK_TAB) < 0 && GetAsyncKeyState(VK_MENU) >= 0 && |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
841 |
#endif |
5089
67c761427921
(svn r7156) -Codechange: Remove obsolete variable, localize global variable, use GB and change logic
Darkvater
parents:
5086
diff
changeset
|
842 |
!_networking && _game_mode != GM_MENU) { |
67c761427921
(svn r7156) -Codechange: Remove obsolete variable, localize global variable, use GB and change logic
Darkvater
parents:
5086
diff
changeset
|
843 |
_fast_forward |= 2; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4000
diff
changeset
|
844 |
} else if (_fast_forward & 2) { |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
845 |
_fast_forward = 0; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4000
diff
changeset
|
846 |
} |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
847 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
848 |
cur_ticks = GetTickCount(); |
6231
ff7454d35935
(svn r9034) -Codechange: renamed _pause to _pause_game, as some targets already have
truelight
parents:
6205
diff
changeset
|
849 |
if (cur_ticks >= next_tick || (_fast_forward && !_pause_game) || cur_ticks < prev_cur_ticks) { |
7019
09e090048a59
(svn r10278) -Fix r10276: make the _realtime_tick less demanding on the CPU
truelight
parents:
7018
diff
changeset
|
850 |
_realtime_tick += cur_ticks - last_cur_ticks; |
09e090048a59
(svn r10278) -Fix r10276: make the _realtime_tick less demanding on the CPU
truelight
parents:
7018
diff
changeset
|
851 |
last_cur_ticks = cur_ticks; |
5581
cf2b8ba6556b
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
rubidium
parents:
5475
diff
changeset
|
852 |
next_tick = cur_ticks + 30; |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
853 |
_ctrl_pressed = _wnd.has_focus && GetAsyncKeyState(VK_CONTROL)<0; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
854 |
_shift_pressed = _wnd.has_focus && GetAsyncKeyState(VK_SHIFT)<0; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
855 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
856 |
// determine which directional keys are down |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
857 |
if (_wnd.has_focus) { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
858 |
_dirkeys = |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
859 |
(GetAsyncKeyState(VK_LEFT) < 0 ? 1 : 0) + |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
860 |
(GetAsyncKeyState(VK_UP) < 0 ? 2 : 0) + |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
861 |
(GetAsyncKeyState(VK_RIGHT) < 0 ? 4 : 0) + |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
862 |
(GetAsyncKeyState(VK_DOWN) < 0 ? 8 : 0); |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4000
diff
changeset
|
863 |
} else { |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
864 |
_dirkeys = 0; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4000
diff
changeset
|
865 |
} |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
866 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
867 |
GameLoop(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
868 |
_cursor.delta.x = _cursor.delta.y = 0; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
869 |
|
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4000
diff
changeset
|
870 |
if (_force_full_redraw) MarkWholeScreenDirty(); |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
871 |
|
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
872 |
#if !defined(WINCE) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
873 |
GdiFlush(); |
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
874 |
#endif |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
875 |
_screen.dst_ptr = _wnd.buffer_bits; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
876 |
UpdateWindows(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
877 |
CheckPaletteAnim(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
878 |
} else { |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
879 |
Sleep(1); |
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
880 |
#if !defined(WINCE) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
881 |
GdiFlush(); |
5758
4b10d28b54c7
(svn r8309) [WinCE] -Fix: WinCE doesn't know resolution changing
truelight
parents:
5587
diff
changeset
|
882 |
#endif |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
883 |
_screen.dst_ptr = _wnd.buffer_bits; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
884 |
DrawTextMessage(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
885 |
DrawMouseCursor(); |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
886 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
887 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
888 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
889 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
890 |
bool VideoDriver_Win32::ChangeResolution(int w, int h) |
2174
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
891 |
{ |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
892 |
_wnd.width = _wnd.width_org = w; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
893 |
_wnd.height = _wnd.height_org = h; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
894 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
895 |
MakeWindow(_fullscreen); // _wnd.fullscreen screws up ingame resolution switching |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
896 |
|
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
897 |
return true; |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
898 |
} |
24d868f1c576
(svn r2688) MSVC and Watcom can't handle identical file names in different directories, oh my...
tron
parents:
diff
changeset
|
899 |
|
7170
923946ec324f
(svn r10444) -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
peter1138
parents:
7126
diff
changeset
|
900 |
void VideoDriver_Win32::ToggleFullscreen(bool full_screen) |
4489 | 901 |
{ |
902 |
MakeWindow(full_screen); |
|
903 |
} |