60 lines
1.9 KiB
C++

#pragma once
#include <Windows.h>
#include <string>
#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
};
}