Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

24.07.2008, 12:19

GUI Bibliothek V2 (Beta)

GUI Bibliothek V2 Beta-Status
GUI Lib V2 installiert ein vollkommen neues Fenstersystem in ein Hostfenster. Dadurch werden unregelmäßige Formen und viele andere Effekte stark vereinfacht.

Die Struktur
(1) Manager
Er verwaltet die einzellnen Frames und kümmert sich darum, dass alles korrekt gezeichnet wird. Weiterhin bietet er auch die Möglichkeit, alles mit verschiedenen Layern zu überblenden usw.

(2) Frames
Frames entsprechend in etwa den Fenstern eines Windows OS. Sie können einen Content und Caption bereich haben und lassen sich im Hostfenster (Manager) frei bewegen. (Wenn nicht explizit angegeben wurde, dass sie es nicht können!). Sie kümmern sich um das Zeichnen der einzellnen Controls, die in jedem Frame platziert werden können.

(3) Controls
Controls sind die letzte Ebene des Zeichenkonstrukts und können innerhalb der Frames platziert werden. Sie können Benutzereingaben auswerten, wie aber auch alle höheren Ebenen. Sie haben eine absolute Position im Frame.

(4) Menu - Frame
Das Menü ist ein Frame, dass allerdings die Zeichenroutine überschrieben hat, und somit vom Aussehen her nicht den anderen Frames entspricht. Es fügt dem System eine neue Verwaltungsebene hinzu. Desktops. Nun können die einzellnen Frames im Manager noch verschiedenen Desktops zugeordnet werden, die durch die Auswahl im Menü angezeigt werden können.

Allgemeine Information
Die Bibliothek ist ein redesign einer etwas älteren Bibliothek von mir, GUI Lib V1, die unstabil lief, schlecht kommentiert war und vom Klassendesign unmöglich war. Davon abgesehn, dass der Code sehr unsauber war.

Es sind noch nicht alle Controls der alten Bibliothek wieder vorhanden, denn diese müssen z.T. noch neu geschrieben werden.

Im Moment ist die Bibliothek noch in der Beta-Phase, damit ihr mir freundlicher weise helfen könnt, dafür zu sorgen, dass die Bibliothek stabil und BUG-frei läuft. Ein paar Fehler konnte ich auf diese weise schon beseitigen. Nochmal vielen Danke dafür! :)

Die Bibliothek setzt ein Windows Betriebssystem auf 32bit-basis mit installierten GDI+ voraus. Wenn GDI+ nicht vorhanden ist, kann es hier von microsoft.com herunter geladen werden.

Screenshot

(Link)


Download
GUI Library V2 Beta (Win32) 45.1 KB

Viele Grüße und vielen Dank fürs Testen,
Deviloper!

Hinweiß
Es wäre nett, wenn ihr, wenn ihr einen Fehler findet, diesen mit Angabe von Betriebssystem, evtl. Screenshot und möglichst genauer Beschreibung hier posten könntet :) Wärt mir eine sehr große Hilfe! Danke :)

Bekannte BUGs
  1. Zitat von »"grek40"«

    [...] Wenn man das Control Frame per Maus über dem List Frame rumschiebt dann wird trotzdem im List Frame der Eintrag markiert, der unter der Maus liegt, obwohl die Eingabe ja nur beim Controlframe ankommen dürfte.
    Vielen danke an grek40 :). Bug behoben!
  2. Undefinierter Status des Laderads. Bug behoben!
  3. Bound-Check für Frames im Host-Fenster ist nicht korrekt. Durch negative Werte kann dadurch auftreten, dass der Rand des Frames nicht gezeichnet wird. (Finder: SirForce. DANKE!) Auch kann so die Steuerung durch die Maus fehlerhaft werden. Wobei dies nicht ausschließlich mit dem Bound-Check zu tun hat. (Finder: grek40. DANKE!). Bug behoben!
  4. Wenn eine Caption hinter einem Content-Bereich eines anderen Frames war, wird durch klicken in den Content-Bereich auf innerhalb des Captionbereich, dieses ausgewählt. Bug behoben! (langsam)
  5. Beispielanwendung vergrößert das Host-Fenster nicht bei WM_SIZE. Bug behoben!
  6. Wenn ein Button-Control gedrückt wird und dabei der Cursor aus dem Rect des Buttons gezogen wird, behält dieser das pushed-bit gesetzt!
  7. Button eines anderen Desktop können gedrückt werden, d.h. der Hit-Test für den Content-Bereich reagiert auch, wenn der Frame nicht sichtbar ist! Bug behoben!
  8. Frame Caption wird bei schnellen Bewegungen nicht sauber gezeichnet.

Update
2008-07-24 15:26 BUG 1 und 2 wurden behoben. Neuer Download!
2008-07-24 21:20 BUG 3 wurde behoben. Neuer Download!
2008-07-25 04:19 BUG 4 und 5 wurden behoben. Neuer Download!
2008-08-01 14:20 BUG 7 wurde behoben. Das komplette Zeichensystem wurde neu aufgebaut, so das jedes Frame und jedes Control einen eigenen Device bekommt und nur neu gezeichnet wird, wenn wirkliche Änderungen vorgenommen wurden, d.h. z.B. ein Item der List hinzugefügt wurde. Sonst wird einfach der Inhalt des Memory Device des Frame oder des Control an die aktuelle Position gezeichnet. Performance pur! Provisorisch wird das komplette Host-Fenster neu gezeichnet, wenn das Frame bewegt wird, um Zeichenfehler zu vermeiden!
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

2

24.07.2008, 16:16

Update! Hoffe jetzt geht's bei allen :P Testen wäre nett :)

Dankeee!
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

3

24.07.2008, 16:41

Laufen tuts bei mir immernoch (Vista 64)


Hab jetzt weiter mit der Maus rumgespielt, um die nächste Gemeinheit zu finden:
Zieh ein Frame mit der Maus an den Rand und lass die Maustaste los während die Maus das Programmfenster verlassen hat - bis zum nächsten Mausklick lässt sich das Frame ohne gedrückte Maustaste durch die Gegend schieben ;)
Außerdem kann man mit entsprechendem Schwung die Frames aus dem Fenster rausschieben (nich so dass sie außerhalb zu sehn sind sondern nur dann sie unsichtbar sind) und erst wenn die Maus wieder im Fenster drin ist kommt das Frame auch wieder vollständig in den sichtbaren Bereich.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

4

24.07.2008, 16:42

Funktioniert einwandfrei! Gefällt mir gut.
Ein kleiner Verbesserungsvorschlag: Beim Listframe wäre es angenehm, wenn man durch drücken von Buchstaben zum jeweils ersten Listelement springen könnte!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

SirForce

Alter Hase

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

5

24.07.2008, 16:58

Bei mir (WinXP 32bit)ist das Programm einmal leider abgeschmiert, als ich die Fenster ein bisschen rumgezogen habe. Einmaliger Vorfall, aber vllt ist es dir ja trotzdem wichtig. *klick*
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

6

24.07.2008, 17:29

hier tuts auch noch (vista + service pack1)

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

24.07.2008, 18:38

bei mir gehts auch, ist aber unsäglich langsam (ich denke mal das ist nicht nur bei mir so?)
habe windows xp mit aktuellem sp. was benutzt du denn zum zeichnen? planst du die bibliothek für andere engines wie ogre oder irrlicht benutzbar zu machen?

8

24.07.2008, 18:51

hmm wenn ichs fertig hab, könnt ich das machen :) Die Idee gefällt mir :) Dann halt statt den grauen Hintergrund das Ogre o. Irrlich oder sonstwas Rendering. Sollte auch leicht machbar sein. Einfach nen Renderer-Interface nutzen und dann für normale Anwendungen ein GDI+ Renderer erstellen und sonst halt DirectX und OpenGL ... wobei man das ja dann auch dem endnutzer überlassen könnte. Dazu muss aber die Bibliothek erstmal als stabel eingestuft werden können ;) Und das ist leider noch nicht der Fall.

So und zu dem langsam. DAS sollte NUR bei DIR so sein :P Beschreib mal, was du mit unsäglich langsam meinst? Ruckelt es beim zeichnen oder wie?
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

9

24.07.2008, 18:57

Achja, grek40, dass ist das Problem, wenn man sich auf WinAPI-Messages verlässt :P Okay werd versuchen das die Tage zu korrigieren ... Danke :)

Black-Panther: Danke fürs Testen! Und ja, kann man evtl. einbauen, wenn ich Keybord-Input verarbeite. Im Moment ist alles komplett Maus gesteuert ;) (Wird kommen, wenn Edit-Feld usw. implementiert werden ...). Aber ich könnt mir noch vorstellen, dass man auf die Überschriften klickt, und sich die Einträge dann asc. bzw. dsc nach dieser spalte sortieren ... Aber das ist ein kleines extra-Feature, was ich erst plane einzubauen, wenn die restlichen Controls wieder überarbeitet sind und mit in der Bibliothek enthalten sind ;)

SirForce: Auch dir Dank fürs Testen! Okay Fehler erkannt ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

10

24.07.2008, 19:49

Achja rewb0rn: Ich werd die Performance aber noch steigern ;) Jedes Control bekommt jetzt einen MemDC in dem ich die Daten reinschreib, denn selbst wenn das Control wo anders gezeichnet wird, bleibt das, was gezeichnet wird, identisch. Sollte von d.h. wesentlich schneller sein. Dann muss ich's nur neu zeichnen lassen, wenn wirklich nen flag dafür gesetzt wurde, was z.B. passiert, wenn ne Caption geändert wird, nen Item der Liste hinzugefügt wird usw. Sollte nochmal nen boost geben. Doch ist dabei dann auch immer die Frage, wie sich sowas dann auf DirectX und OpenGL emulieren lässt :P
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige