Grafikfenster + maxgui -> Events weg?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

blackgecko

Betreff: Grafikfenster + maxgui -> Events weg?

BeitragFr, Sep 10, 2010 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich arbeit mich grad in blitzmax ein. Jetzt wollte ich ein kleines programm schreiben, für das ich ein Graphics-Fenster und ein normales Fenster (MaxGUI) brauch.
Das Ganze hat sich sehr merkwürdig verhalten. Nach langem Problemeinkreisen ist dieser Code entstanden:
BlitzMax: [AUSKLAPPEN]
SuperStrict

'Import Maxgui.Drivers


Graphics 640,480,0
SetColor 255,0,0
DrawRect 200,200,200,200

Rem
Local window:TGadget = CreateWindow("Werkzeug",0,0,300,700,Null,WINDOW_TITLEBAR|WINDOW_TOOL|WINDOW_CLIENTCOORDS)
Local tabber:TGadget = CreateTabber(0,0,window.getwidth(),window.getheight(),window)
AddGadgetItem tabber,"Tab nummer 1"
AddGadgetItem tabber,"Tab nummer 2"
EndRem





Repeat
WaitEvent

Select EventID()
Case EVENT_KEYDOWN
Print "Tastendruck registriert!"
Case EVENT_WINDOWCLOSE
Print "Jemand hat das Fenster zugemacht!"
Case EVENT_MOUSEDOWN
Print "Mausklick registriert"
Case EVENT_GADGETACTION
Print "Gadget Äktschn!"
Case EVENT_APPTERMINATE
Print "Das Grafikfenster soll geschlossen werden!"
EndSelect


Flip
Print "Flip durchgeführt!"
Forever

End

So wie er jetzt ist, funktioniert er ohne Probleme, Mausklicks und Tasten werden korrekt abgefangen und ausgegeben.
Wenn ich jetzt aber den Kommentar-Apostroph bei der Import-Anweisung wegmach, dann wird plötzlich gar nichts mehr ausgegeben.
Und wenn ich jetzt noch den Kommentarblock bei der Fenstererstellung wegmach, dann liefert nur das MaxGUI-Fenster Events, das Grafikfenster nicht.

Hab ich irgendwas Wichtiges übersehen?
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Xeres

Moderator

BeitragFr, Sep 10, 2010 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst einen canvas erstellen und darauf zeichnen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

blackgecko

BeitragFr, Sep 10, 2010 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein normales Grafikfenster geht nicht? Sad
Das wär blöd, denn dort soll nämlich 3D-Grafik (minib3d) gezeichnet werden.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Lastmayday

BeitragFr, Sep 10, 2010 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
tag!

wie gesagt, du soltest eine canvas erstellen. da das unterumständen etwas knifflig ist, hier ein kleines Grundgerüst:

(ansonten einfach etwas damit rumprobieren)

BlitzMax: [AUSKLAPPEN]

Global canvas:TGadget = CreateCanvas(0, 0, 800, 600, window)

SetGraphics CanvasGraphics(canvas)

While PollEvent()
Select EventID()
Case EVENT_GADGETSELECT
Select EventSource()
Case listbox
'listbox
End Select
Case EVENT_MOUSEDOWN
md = EventData()
If md = 1 Then
mx = Gmx
my = Gmy
End If
Case EVENT_MOUSEMOVE
Gmx = EventX()
Gmy = EventY()
Case EVENT_GADGETACTION
Select EventSource()
Case listbox
'listbox
End Select
Case EVENT_WINDOWCLOSE
End
End Select
Wend

mpmxyz

BeitragFr, Sep 10, 2010 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche BlitzMax-Version verwendest du? (Und worauf?)
Bei mir funktioniert nämlich alles.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

blackgecko

BeitragFr, Sep 10, 2010 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Seltsam, dass es bei dir geht.
Mein Blitzmax sollte die neuste Version sein, 1.41 steht hier.
Mein System steht in meiner Signatur, Betriebssystem ist Linux.


Das mit dem Canvas versteh ich schon, ich hab ja vorher mit BlitzPlus gearbeitet. Aber kann man da auch 3D drauf zeichnen? Wenn ja wie?
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Lord Stweccys

BeitragFr, Sep 10, 2010 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann dir nicht auf anhieb sagen wie, aber ich bin mir sicher, dass ein Befehl, der minib3d auf ein Canvas bindet, Bestandteil des minib3d-Pakets ist. Die leichteste Lösung: Code und BlitzMax-Hilfe nach Befehlen durchforsten.

Außerdem kann man minib3ds Grafik-Fenster auch einfach mit dem b3D-ähnlichen Befehl Graphics3d erstellen...

blackgecko

BeitragFr, Sep 10, 2010 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Außerdem kann man minib3ds Grafik-Fenster auch einfach mit dem b3D-ähnlichen Befehl Graphics3d erstellen...

Genauso hatte ichs ja gemacht. Nur wollt ich hier halt nicht so viel Code schreiben, also hab ich halt für den beispielcode ein normales Graphics-Fenster genommen, das Problem wr das Gleiche und Graphics3D tut glaubich auch nicht viel mehr als ein Graphics-Fenster zu öffnen.


Nach einem Befehl, der das Ganze auf ein Canvas bringt, such ich mal.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

mpmxyz

BeitragFr, Sep 10, 2010 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
So einfach kann BlitzMax sein!
(Okay, ich habe die volle Stunde daran gearbeitet.)
BlitzMax: [AUSKLAPPEN]

SuperStrict
Import maxGUI.Drivers
Import "***\minib3d\minib3d.bmx"

SetGraphicsDriver(GLMax2DDriver())

Local window:TGadget=CreateWindow("",0,0, 800,600,, WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS|WINDOW_CENTER)
Local canvas:TGadget=CreateCanvas(0,0,800,600,window)

CanvasGraphics3D(canvas)

Local cub:TEntity=CreateCube()
Local cam:TEntity=CreateCamera()
MoveEntity cam,0,0,-10

Local timer:TTimer=CreateTimer(60)

While WaitEvent()
Select EventID()
Case EVENT_WINDOWCLOSE
End
Case EVENT_TIMERTICK
RedrawGadget canvas
Case EVENT_GADGETPAINT
Cls
RenderWorld()
Flip
Default
Print CurrentEvent.toString()
End Select
Wend

Function CanvasGraphics3D(canvas:TGadget)
SetGraphics CanvasGraphics(canvas)
TGlobal.width=GraphicsWidth()
TGlobal.height=GraphicsHeight()
TGlobal.depth=GraphicsDepth()
TGlobal.mode=1+(GraphicsDepth()=0)
TGlobal.rate=GraphicsHertz()
TGlobal.GraphicsInit()
EndFunction

mfG
mpmxyz
PS: Die Informationen habe ich mir aus dem Code der brl-Module und von MiniB3D erlesen.
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

blackgecko

BeitragFr, Sep 10, 2010 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Jaaa, es geht! Very Happy
Danke an alle und ganz besonders an mpmxyz! Wink
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group