1 /* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2006 Sam Lantinga 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 19 Sam Lantinga 20 slouken@libsdl.org 21 */ 22 #include "SDL_config.h" 23 24 #ifndef _SDL_lowvideo_h 25 #define _SDL_lowvideo_h 26 27 #define WIN32_LEAN_AND_MEAN 28 #include <windows.h> 29 30 #ifndef SetClassLongPtr 31 #define SetClassLongPtr SetClassLong 32 #endif 33 #ifndef GetWindowLongPtr 34 #define GetWindowLongPtr GetWindowLong 35 #endif 36 #ifndef SetWindowLongPtr 37 #define SetWindowLongPtr SetWindowLong 38 #endif 39 #ifndef GWLP_WNDPROC 40 #define GWLP_WNDPROC GWL_WNDPROC 41 #endif 42 #ifndef GWLP_HINSTANCE 43 #define GWLP_HINSTANCE GWL_HINSTANCE 44 #endif 45 #ifndef GCLP_HICON 46 #define GCLP_HICON GCL_HICON 47 #endif 48 49 #include "../SDL_sysvideo.h" 50 51 /* Hidden "this" pointer for the video functions */ 52 #define _THIS SDL_VideoDevice *this 53 54 #define WINDIB_FULLSCREEN() \ 55 ( \ 56 SDL_VideoSurface && \ 57 ((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) && \ 58 (((SDL_VideoSurface->flags & SDL_OPENGL ) == SDL_OPENGL ) || \ 59 ((SDL_strcmp(this->name, "windib") == 0) || \ 60 (SDL_strcmp(this->name, "gapi") == 0))) \ 61 ) 62 #define DDRAW_FULLSCREEN() \ 63 ( \ 64 SDL_VideoSurface && \ 65 ((SDL_VideoSurface->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) && \ 66 ((SDL_VideoSurface->flags & SDL_OPENGL ) != SDL_OPENGL ) && \ 67 (SDL_strcmp(this->name, "directx") == 0) \ 68 ) 69 70 #define DINPUT_FULLSCREEN() DDRAW_FULLSCREEN() 71 72 /* The main window -- and a function to set it for the audio */ 73 #ifdef _WIN32_WCE 74 extern LPWSTR SDL_Appname; 75 #else 76 extern LPSTR SDL_Appname; 77 #endif 78 extern HINSTANCE SDL_Instance; 79 extern HWND SDL_Window; 80 extern BOOL SDL_windowid; 81 82 /* Variables and functions exported to other parts of the native video 83 subsystem (SDL_sysevents.c) 84 */ 85 extern void WIN_FlushMessageQueue(); 86 87 /* Called by windows message loop when application is activated */ 88 extern void (*WIN_Activate)(_THIS, BOOL active, BOOL minimized); 89 90 /* Called by windows message loop when system palette is available */ 91 extern void (*WIN_RealizePalette)(_THIS); 92 93 /* Called by windows message loop when the system palette changes */ 94 extern void (*WIN_PaletteChanged)(_THIS, HWND window); 95 96 /* Called by windows message loop when a portion of the screen needs update */ 97 extern void (*WIN_WinPAINT)(_THIS, HDC hdc); 98 99 /* Called by windows message loop when the message isn't handled */ 100 extern LONG (*HandleMessage)(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); 101 102 /* The window cursor (from SDL_sysmouse.c) */ 103 extern HCURSOR SDL_hcursor; 104 105 /* The bounds of the window in screen coordinates */ 106 extern RECT SDL_bounds; 107 108 /* The position of the window in windowed mode */ 109 extern int SDL_windowX; 110 extern int SDL_windowY; 111 112 /* Flag -- SDL is performing a resize, rather than the user */ 113 extern int SDL_resizing; 114 115 /* Flag -- the mouse is in relative motion mode */ 116 extern int mouse_relative; 117 118 /* The GDI fullscreen mode currently active */ 119 #ifndef NO_CHANGEDISPLAYSETTINGS 120 extern DEVMODE SDL_desktop_mode; 121 extern DEVMODE SDL_fullscreen_mode; 122 #endif 123 124 /* The system gamma ramp for GDI modes */ 125 extern WORD *gamma_saved; 126 127 /* This is really from SDL_dx5audio.c */ 128 extern void DX5_SoundFocus(HWND window); 129 130 /* DJM: This is really from SDL_sysevents.c, we need it in 131 GDL_CreateWindow as well */ 132 LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); 133 134 /* JFP: Implementation of ToUnicode() that works on 9x/ME/2K/XP */ 135 typedef int (WINAPI *ToUnicodeFN)(UINT, UINT, PBYTE, LPWSTR, int, UINT); 136 137 extern ToUnicodeFN SDL_ToUnicode; 138 139 #endif /* SDL_lowvideo_h */ 140