00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_WINDOWIMPLWIN32_HPP
00026 #define SFML_WINDOWIMPLWIN32_HPP
00027
00029
00031 #include <SFML/Window/Event.hpp>
00032 #include <SFML/Window/WindowImpl.hpp>
00033 #include <set>
00034 #include <string>
00035
00036
00037 namespace sf
00038 {
00039 namespace priv
00040 {
00044 class WindowImplWin32 : public WindowImpl
00045 {
00046 public :
00047
00053 WindowImplWin32();
00054
00062 WindowImplWin32(WindowHandle Handle, int AntialiasingLevel);
00063
00073 WindowImplWin32(VideoMode Mode, const std::string& Title, unsigned long WindowStyle, int AntialiasingLevel);
00074
00079 ~WindowImplWin32();
00080
00081 private :
00082
00087 virtual void Display();
00088
00093 virtual void ProcessEvents();
00094
00099 virtual void MakeCurrent() const;
00100
00105 virtual void UseVerticalSync(bool Enabled);
00106
00111 virtual void ShowMouseCursor(bool Show);
00112
00117 virtual void SetPosition(int Left, int Top);
00118
00123 void RegisterWindowClass();
00124
00133 void CreateContext(VideoMode Mode, bool Fullscreen, int AntialiasingLevel);
00134
00139 void Cleanup();
00140
00149 void ProcessEvent(UINT Message, WPARAM WParam, LPARAM LParam);
00150
00154 void SetupJoysticks();
00155
00164 static Key::Code VirtualKeyCodeToSF(WPARAM VirtualKey);
00165
00177 static LRESULT CALLBACK GlobalOnEvent(HWND Handle, UINT Message, WPARAM WParam, LPARAM LParam);
00178
00182 struct JoyCaps
00183 {
00184 int CenterX;
00185 int CenterY;
00186 int CenterZ;
00187 int RangeX;
00188 int RangeY;
00189 int RangeZ;
00190 };
00191
00193
00195 static unsigned int ourWindowCount;
00196 static const wchar_t* ourClassName;
00197 static WindowImplWin32* ourDummyWindow;
00198 static WindowImplWin32* ourFullscreenWindow;
00199
00201
00203 HWND myHandle;
00204 HDC myDeviceContext;
00205 HGLRC myGLContext;
00206 long myCallback;
00207 JoyCaps myJoystickCaps[2];
00208 HCURSOR myCursor;
00209 };
00210
00211 }
00212
00213 }
00214
00215 #endif // SFML_WINDOWIMPLWIN32_HPP