#pragma once #include "IEngine.h" #include "IWindow.h" #include "ISwapChain.h" class Window : public IWindow { public: Window(IEngine& argEngine); virtual ~Window(); // IWindow: virtual void Initialize(const string16& argTitle, int argWidth, int argHeight, bool argFullscreen); virtual LRESULT ProcessMessage(UINT argMessage, WPARAM argWParam, LPARAM argLParam); virtual void SwapBuffers(); virtual void set_Active(bool argActive); virtual bool get_Active(); virtual void set_Fullscreen(bool argFullscreen); virtual bool get_Fullscreen(); virtual void set_VSync(bool argUseVSync); virtual bool get_VSync(); virtual void set_DeviceContext(HDC argDeviceContext); virtual void set_Title(const string16& argTitle); virtual string16 get_Title(); virtual HDC get_DeviceContext(); virtual HWND get_Handle(); virtual ISwapChain& get_SwapChain() const { return *m_SwapChain; } private: static LRESULT CALLBACK MessageCallback(HWND argHandle, UINT argMessage, WPARAM argWParam, LPARAM argLParam); IEngine& m_Engine; ISwapChain* m_SwapChain; string16 m_Title; int m_Width; int m_Height; HDC m_DeviceContext; HWND m_Handle; HINSTANCE m_Instance; bool m_Active; bool m_Fullscreen; };