Pyrogenesis  trunk
win.h
Go to the documentation of this file.
1 /* Copyright (c) 2010 Wildfire Games
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining
4  * a copy of this software and associated documentation files (the
5  * "Software"), to deal in the Software without restriction, including
6  * without limitation the rights to use, copy, modify, merge, publish,
7  * distribute, sublicense, and/or sell copies of the Software, and to
8  * permit persons to whom the Software is furnished to do so, subject to
9  * the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included
12  * in all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  */
22 
23 /*
24  * bring in <windows.h> with compatibility fixes
25  */
26 
27 #ifndef INCLUDED_WIN
28 #define INCLUDED_WIN
29 
30 #if !OS_WIN
31 #error "win.h: do not include if not compiling for Windows"
32 #endif
33 
34 // Win32 socket declarations aren't portable (e.g. problems with socklen_t)
35 // => skip winsock.h; use curl or enet library instead.
36 #define _WINSOCKAPI_
37 
38 #define WIN32_LEAN_AND_MEAN
39 #define VC_EXTRALEAN
40 
41 
42 // other headers may have defined <windows.h>'s include guard to prevent
43 // external libraries from pulling it in (which would cause conflicts).
44 #undef _WINDOWS_
45 
46 // set version; needed for EnumDisplayDevices
47 #ifndef NTDDI_VERSION
48 # define NTDDI_VERSION NTDDI_LONGHORN
49 #endif
50 #ifndef _WIN32_WINNT
51 # define _WIN32_WINNT 0x600
52 #endif
53 
54 #define NOGDICAPMASKS // CC_*, LC_*, PC_*, CP_*, TC_*, RC_
55 //#define NOVIRTUALKEYCODES // VK_*
56 //#define NOWINMESSAGES // WM_*, EM_*, LB_*, CB_*
57 //#define NOWINSTYLES // WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
58 //#define NOSYSMETRICS // SM_*
59 #define NOMENUS // MF_*
60 //#define NOICONS // IDI_*
61 #define NOKEYSTATES // MK_*
62 //#define NOSYSCOMMANDS // SC_*
63 #define NORASTEROPS // Binary and Tertiary raster ops
64 //#define NOSHOWWINDOW // SW_*
65 #define OEMRESOURCE // OEM Resource values
66 #define NOATOM // Atom Manager routines
67 //#define NOCLIPBOARD // Clipboard routines
68 //#define NOCOLOR // Screen colors
69 //#define NOCTLMGR // Control and Dialog routines
70 #define NODRAWTEXT // DrawText() and DT_*
71 //#define NOGDI // All GDI defines and routines
72 //#define NOKERNEL // All KERNEL defines and routines
73 //#define NOUSER // All USER defines and routines
74 //#define NONLS // All NLS defines and routines
75 //#define NOMB // MB_* and MessageBox()
76 #define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines
77 #define NOMETAFILE // typedef METAFILEPICT
78 #define NOMINMAX // Macros min(a,b) and max(a,b)
79 //#define NOMSG // typedef MSG and associated routines
80 #define NOOPENFILE // OpenFile(), OemToAnsi, AnsiToOem, and OF_*
81 #define NOSCROLL // SB_* and scrolling routines
82 //#define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc.
83 //#define NOSOUND // Sound driver routines
84 #define NOTEXTMETRIC // typedef TEXTMETRIC and associated routines
85 //#define NOWH // SetWindowsHook and WH_*
86 //#define NOWINOFFSETS // GWL_*, GCL_*, associated routines
87 //#define NOCOMM // COMM driver routines
88 #define NOKANJI // Kanji support stuff.
89 #define NOHELP // Help engine interface.
90 #define NOPROFILER // Profiler interface.
91 #define NODEFERWINDOWPOS // DeferWindowPos routines
92 #define NOMCX // Modem Configuration Extensions
93 #include <windows.h>
94 
95 #include <winreg.h>
96 
97 #if ARCH_IA32
98 // the official version causes pointer truncation warnings.
99 # undef InterlockedExchangePointer
100 # define InterlockedExchangePointer(Target, Value) (PVOID)(uintptr_t)InterlockedExchange((PLONG)(Target), (LONG)(uintptr_t)(Value))
101 #endif
102 
103 #endif // #ifndef INCLUDED_WIN