mGUI - Handle vor Erstellung der GUI-Elementen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Well

Betreff: mGUI - Handle vor Erstellung der GUI-Elementen

BeitragFr, Jan 22, 2010 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

ich habe gerade ein Problem mit der mGUI. Wärend der folgende Code funktionieren sollte:

Code: [AUSKLAPPEN]
mg_gui_Skin("...")
Local hWindow = mg_Window_Create(0, 0, 100, 100, "Test")

Repeat
  Cls
  mg_gui_Main()
  Flip
Until KeyHit(1)


zeigt mir folgender rein gar nichts an:

Code: [AUSKLAPPEN]
mg_gui_Skin("...")
[b]Type Test
End Type
Local Test = Handle(New Test)[/b]
Local hWindow = mg_Window_Create(0, 0, 100, 100, "Test")

Repeat
  Cls
  mg_gui_Main()
  Flip
Until KeyHit(1)


Folgender Code wiederum funktioniert:

Code: [AUSKLAPPEN]
mg_gui_Skin("...")
Local hWindow = mg_Window_Create(0, 0, 100, 100, "Test")
[b]Type Test
End Type
Local Test = Handle(New Test)[/b]

Repeat
  Cls
  mg_gui_Main()
  Flip
Until KeyHit(1)


Die GUI hat also offensichtlich Probleme, wenn man vor dem Erstellen der Elemente die Funktion "Handle" verwendet?!

Es hatte nicht zufällig einmal einer das selbe Problem und zufällig einen schnellen "Fix" dafür gefunden?

MfG

Der Eisvogel

BeitragFr, Jan 22, 2010 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also normalerweise sollte davon garnix funktionieren. Man muss erst mg_gui_Init aufrufen Wink
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Well

BeitragSa, Jan 23, 2010 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Eisvogel hat Folgendes geschrieben:
Also normalerweise sollte davon garnix funktionieren. Man muss erst mg_gui_Init aufrufen Wink

Mag sein. Ist aber meiner Meinung nach nicht relevant, der Schwerpunkt liegt ja an dem Handle vor dem Erstellen der GUI-Elementen.
 

Well

BeitragSa, Jan 23, 2010 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin. Smile

In der Datei kernel.bb gibt es die Funktion mg_gui_render().
Darin finden sich folgende zwei Zeilen Code:

Code: [AUSKLAPPEN]
   ;Local widget.mg_widget = First mg_widget                     ;*** VOR 22.08.2008 ***
   Local widget.mg_widget = Object.mg_widget( mg_gui_render )    ;*** NEU 22.08.2008 ***

Verwendet man hier die "alte" Version, macht es keine Probleme, Handle vor dem erzeugen der GUI-Elemente zu verwenden. Folgendes funktioniert also:
Code: [AUSKLAPPEN]
   Local widget.mg_widget = First mg_widget                     ;*** VOR 22.08.2008 ***
   ;Local widget.mg_widget = Object.mg_widget( mg_gui_render )    ;*** NEU 22.08.2008 ***


Nur für den Fall, dass noch wer das gleiche Problem hat. Smile

MfG

Silver_Knee

BeitragSa, Jan 23, 2010 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
handle erzeugt handles
evtl ist ohne init mg_gui_renderer=0 und dass ist zufällig die erste erstellte handle von First mg_widget erstellt man dann handles zwischen rein provozierst du damit offensichtlich einen fehler.
 

Well

BeitragSa, Jan 23, 2010 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Silver_Knee hat Folgendes geschrieben:
handle erzeugt handles
evtl ist ohne init mg_gui_renderer=0 und dass ist zufällig die erste erstellte handle von First mg_widget erstellt man dann handles zwischen rein provozierst du damit offensichtlich einen fehler.

In meinem richtigem Code rufe ich die Init Funktion natürlich auf. Macht jedoch keinen Unterschied, den Fehler besteht trotzdem.

mfg

Der Eisvogel

BeitragSo, Jan 24, 2010 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte die Codes oben alle ausprobiert, keiner ging ohne das Init. Mit einem Init lief alles wunderbar. Ich kann deinen Fehler leider nicht nachvollziehen bzw reproduzieren.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Well

BeitragSo, Jan 24, 2010 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh? Gut, dann einmal mein Code:

Code: [AUSKLAPPEN]
; Dateien einbinden
Include "../Lib/Tcp/TcpClient.bb"
Include "../Lib/Resource/Resource.bb"

Include "../ExtLib/mGUI/mgui.bb"

; Initialisieren
Graphics 800, 600, 32, 2
mg_gui_Init("Imatrix")   ;----> GUI-INI <----
SetBuffer BackBuffer()
HidePointer()

; GUI Skin setzen
mg_gui_Skin("./Data/GUI/skin_woody")

; Modus
Const MODE_LOGIN = $01
Const MODE_CHAR  = $02
Const MODE_WORLD = $03
Global Mode = MODE_LOGIN

; Spieleparts einbinden
Include "./Parts/Login.bb"
;Include "./Parts/Char.bb"
;Include "./Parts/World.bb"

; Hauptresource
Global MainResource = LRRM_LoadResource("./Data/MainResource")
Local MouseImage = LoadImage(LRRM_ExtractFile(MainResource, "Mouse.png", GetEnv("TEMP")))

; Hauptroutine
Local Timer = CreateTimer(30)

Repeat
   WaitTimer(Timer)
   Cls
   
   ; Modus prüfen
   Select(Mode)
      ; Login
      Case MODE_LOGIN:
         LoginMain()
      
      Case MODE_CHAR:
         ;CharMain()
      
      Case MODE_WORLD:
         ;WorldMain()
   End Select
   
   ; GUI
   mg_gui_Main()
   
   ; Maus
   DrawImage MouseImage, MouseX(), MouseY()
   
   ; Beenden
   If KeyHit(1) Or MG_EVENT_EXIT Then
      End
   EndIf
   
   Flip
Forever
End


Login.bb ->

Code: [AUSKLAPPEN]
Type Test
End Type
Local Test = Handle(New Test)

; GUI Elemente erstellen
   ; Login
   Global CPL_LoginWindow = mg_Window_Create($FFFFFFFF, $FFFFFFFF, 300, 120, "Login", mg_close)
      mg_Label_Create(CPL_LoginWindow, 10, 30, 80, 20, "µBName: ")
      mg_Label_Create(CPL_LoginWindow, 10, 60, 80, 20, "µBPasswort: ")
   Global CPL_LoginNameInput     = mg_TextField_Create(CPL_LoginWindow, 100, 30, 190, 20, "Benutzername", mg_single)
   Global CPL_LoginPasswordInput = mg_TextField_Create(CPL_LoginWindow, 100, 60, 190, 20, "Passwort", mg_single, 16, mg_password)
   Global CPL_LoginButton = mg_Button_Create(CPL_LoginWindow, 10, 90, 130, 20, "Login")
   Global CPL_LoginCreditsButton = mg_Button_Create(CPL_LoginWindow, 160, 90, 130, 20, "Credits")


Ergebnis bei mir -> Ein schwarzer Bildschirm. (Abgesehen vom Mauszeiger)
Nach der Änderung im mGUI-Code -> Das erstellte Fenster + Elemente.
Mit originalem Code, aber ohne das Handle vor dem Erstellen der GUI-Elementen -> Das erstellte Fenster + Elemente.

Ich wüsste nicht, wo im Code ein Fehler liegen sollte.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group