#pragma once #include #include #include "utils.h" #include "EventHandler.h" namespace eg3d { typedef LRESULT /*CALLBACK*/ (*WinFn)(HWND, UINT, WPARAM, LPARAM); class Window { private: static bool mWndClassInitialized; // már inicializálva van a window class static void initializeWndClass(WinFn pWindowFunction); // használt window class inicializálása ////////////// static LRESULT CALLBACK smWindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // window process, mely az ablakhoz lesz kötve // TODO Epagrisnak: ezt majd még átírom EventHandler* pmEventHandler; // eseményfeldolgozó osztály pointere void registerRawInputDevice(); // ... protected: void create(); // ablak létrehozása HWND mHWND; // ablak-handler const WinFn pWindowFunction; // ablakkezelő függvény pointere static Window * pMainWindow; // főablak public: static const char * sWndClassName; explicit Window(bool show = true, WinFn pWindowFunction = smWindowFunc); // konstr. //explicit Window(WinFn pWindowFunction = smWindowFunc); // ablakkezelő-függvény beállítása virtual ~Window(); // destr. void setSize(unsigned width, unsigned height) const; // méret beállítása SIZE getSize() const; // méret lekérése RECT getRect() const; // ablakot leíró téglalap lekérése RECT getClientRect() const; // felhasználható területet leíró téglalap lekérése void setTitle(const std::string& title) const; // cím beállítása std::string getTitle() const; // cím lekérése void show(bool show) const; // megjelenítés vagy elrejtés HWND getHandle() const; // lekéri a HANDLE-t double getAspectRatio() const; // lekéri a képarányt void setThisAsMainWindow(); // ezt az ablakot állítja be főablaknak void setEventHandler(EventHandler* pEH); // event handler beállítása EventHandler * getEventHandler() const; // event handler lekérése }; }