Gui

Status
Niet open voor verdere reacties.
Zeker, daarvoor heb je wschl wel extra libraries nodig. Een GUI kan je schrijven mbv GTK+, OpenGL, Win32 ... en vele andere.
Als je niet Windows-gebonden programmeert zou ik voor OpenGL gaan, het lijkt me iets eenvoudiger om aan te leren dan GTK+. Als je onder windows werkt geeft Win32 het snelste resultaat denk ik. Zelf ben ik echter nog niet aan GUI toe :)

--Johan
 
of wxWidgets of Qt, da's makkelijker GUI's maken die cross-platform zijn
 
een gui is goed mogelijk en je hebt er verder niks voor nodig......
hangt er van af wat je wil.
je kan emt MFC een end komen, maar das lelijk.
Ik heb net mijn eigen GUI.H definites af (voor zover af af is) en dat is pure c++ waar alles draait om message handling.
Je krijgt in je resource editor een aantal opties, editboxes, comboboxes, listviews,tree views etc. Je hebt je device contexts om alles te tekenen wat je maar wil, en aan plaatjes laden ligt het ook niet. Zodoende heb je alles al in huis om een gui op te zetten.

Mocht je extreem willen gaan (skin like gui's) zul je zo ook een eind komen, maar dan worden extra libraries handig. anderzijds...third party libraries zijn ook niet alles......zij doen wat jij eigenlijk wilt gaan doen.

Het is een behoorlijke tour om je messages correct te krijgen, en je zult veel tijd op msdn door brengen, maar je kan dan ook alle applicaties bouwen met vrijwel elk soort control item. de rest kun je zelf improviseren...

Verder, een gui is een moeilijk begrip als je het wilt gaan combineren met OPENGL of iets dergelijks. OPENGL is voor renderen....grafisch, en je krijgt ook een zware gui (zoals je dat van games waarschijnlijk wel kent).
Wil je gewoon een gui, iets wat ook echt functioneel is, zul je dat absoluut niet in OPENGL moeten gaan doen. Dan zet je een gui op met windows, waarin je je opengl rendert. Bv een editor. je kan moeilijk al je tool implementeren in OPENGL, dat doe je in de windows gui.

het is maar net wat je uiteindelijk wilt gaan maken.
 
Laatst bewerkt:
bedoel je dit ongeveer ?

Code:
gui::IGUIImage * Loading_Img; 
Loading_Img = guienv->addImage(rect<int>(0,0,1280,1024)); 
Loading_Img->setImage( driver->getTexture("3Ddata/kluer/Loginscreen.bmp")); 
driver->beginScene(false, false, SColor(0, 128, 120, 112)); 
Loading_Img->draw(); 
driver->endScene(); 
Sleep(3000);
 
Wil je gewoon een gui, iets wat ook echt functioneel is, zul je dat absoluut niet in OPENGL moeten gaan doen. Dan zet je een gui op met windows, waarin je je opengl rendert. Bv een editor. je kan moeilijk al je tool implementeren in OPENGL, dat doe je in de windows gui.

het is maar net wat je uiteindelijk wilt gaan maken.
Ik zou graag n gui maken die in X werkt, vergeet de windows gui dus maar ;) Iemand daar n goed idee voor?
 
je gui moet je ook zo definieren dat je alle native calls opvangt en eenmaal invult. Je gui moet geheel modulair zijn.
a.k.a. een wrapper!
C kan zelf niks tekenen, alleen opdracht geven tot.......
je kan dus geen gui met C tekenene, alleen de opdracht geven tot het tekenen....

Geheel cross platform is een moeilijk iets. het is ook nog neit mogelijk om ALLES GEHEEL cross platform te houden. Elke OS heeft zijn native calls van whatever.
Schrijf je gui dus met bv
void set_pixel () { SetPixel() };

zodoende kun je de SetPixel voor elk platvorm 1x zetten, en de rest blijft intact, want overal roep je set_pixel aan
typecast ook al je eigen structs bv POINT naar Point (om een dom vb te geven)

Maar goed, das een aanpak van abstractie en een assumptie van injectie wat betreft de
OS. Ik persoonlijk heb weloverwogen deze aanpak genome,,,,,

Ik persoonlijk vind alle pogingen tot een crossplatform tot nu toe een oneerlijke tradeoff.
Maar vindt het zelf uit zou ik zeggen.....

ALs je een ECHTE crossplatform omgeving vind, please let me know....

wat betreft OPENGL, zie dat maar s compleet crossplatform te krijgen.... dan blijft er niet veel over.
Daarnaast, OPENGL draait op een platform, dus is het afhankelijk van....helaas draai je opengl niet uit het niks. Voor windows heb je een render context nodig (oa). Zo ook in Linux of what ever. Om dat zover te krijgen kom je niet onder je platform uit.

Als laatste, een aanpak van search en employ is iets wat soms werkt. Een systeem wat zoekt wat het plarform is, wat het wel en niet kan etc. maar je snapt dat dit alles behalve effiecient is en echt neit allesdekkend is.
als je met OPENGL werkt, zul je je snelheid nodig gaan hebben, geloof me.

alles in X draaien is een te grove eis om waar te maken
Das ook de reden waarom (goeie) programma's tot de nok zijn gevuld met 'compatibility measures'
Vooral OPENGL en videokaarten. Je schrijft niks dat op videokaar X werkt. Je bent altijd bezig met compenseren voor de oudere systemen, en versnellen voor de nieuwere. neem bv pixel shaders.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan