Autor Wątek: HGE GUI proszę o jakiś przykład.  (Przeczytany 851 razy)

Offline Petrus

  • Użytkownik

# Grudzień 18, 2010, 15:37:12
Witam.
Nie mogę ogarnąć tego GUI w HGE. Nie mogę też znaleźć jakiegoś prostego przykładu. Są jakieś od tych narzędzi hge ale tak jest tam zagmatwane, że nic nie rozumiem.
Mógł by ktoś dać jakiś przykład gui w hge (jak odbierać sygnały od kontrolek itp.)

PS. Czy HGE jest jeszcze rozwijane ?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xirdus

  • Redaktor

# Grudzień 18, 2010, 15:49:49
Dokumentacja w dłoń i rura!

Offline Petrus

  • Użytkownik

# Grudzień 18, 2010, 16:28:06
Ahhh źle przeczytałem. Myślałem, że trzeba tworzyć klasę dziedziczącą po hgeGUIObject. Ale to jest chyba do tworzenia własnych obiektów. Ale mam problem, że nie rusza mi się kursor. Trzeba robić coś dodatkowo aby nim poruszać ?, bo z dokumentacji wg. mnie wynika, że wystarczy wywołać SetCursor(hgeSprite *sprite);
Mój kod:
/* HGE GUI TEST 1 */
#include <hge.h>
#include <hgesprite.h>
#include <hgefont.h>
#include <hgegui.h>
#include <hgeguictrls.h>

HGE *hge = 0;

hgeSprite *cur;
hgeGUI *gui;
hgeFont *font;

HTEXTURE button1_texture, cur_t;

void CreateGui();

bool FrameFunc()
{
if(hgeButtonGetState(gui, 0) == true) MessageBox(NULL, "BUTTON CLICKED", "BUTTON CLICKED", MB_OK);
return false;
}

bool RenderFunc()
{
hge->Gfx_BeginScene();
hge->Gfx_Clear(0);

gui->Render();

hge->Gfx_EndScene();
return false;
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
hge = hgeCreate(HGE_VERSION);
hge->System_SetState(HGE_LOGFILE, "hge_log.log");
hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
hge->System_SetState(HGE_TITLE, "HGE GUI 1");
hge->System_SetState(HGE_FPS, 100);
hge->System_SetState(HGE_WINDOWED, true);
hge->System_SetState(HGE_SCREENWIDTH, 800);
hge->System_SetState(HGE_SCREENHEIGHT, 600);
hge->System_SetState(HGE_SCREENBPP, 32);

if(hge->System_Initiate()) {

button1_texture = hge->Texture_Load("b1.png");
cur_t = hge->Texture_Load("cur.png");
cur = new hgeSprite(cur_t, 0, 0, 32, 32);
font = new hgeFont("font.fnt");
gui = new hgeGUI();
CreateGui();

hge->System_Start();

delete font;
delete cur;
hge->Texture_Free(button1_texture);
hge->Texture_Free(cur_t);
}

hge->System_Shutdown();
hge->Release();
return 0;
}

void CreateGui()
{
hgeGUIButton *button;

button = new hgeGUIButton(0, 580, 400, 200, 50, button1_texture, 0, 0);
button->SetState(false);
gui->AddCtrl(button);

gui->SetNavMode(HGEGUI_UPDOWN | HGEGUI_CYCLED);
gui->SetCursor(cur);

gui->Enter();
}


Edit:
MAM !
w funkcji FrameFunc() trzeba dodać
gui->Update(hge->Timer_GetDelta()); i kursor śmiga : )
« Ostatnia zmiana: Grudzień 18, 2010, 19:51:25 wysłana przez Xirdus »