Problem mit DrawText() und rechter Maustaste (Fenster/LINUX)

Anfängerfragen zum Programmieren mit PureBasic.
bec
Beiträge: 13
Registriert: 01.03.2007 23:00

Problem mit DrawText() und rechter Maustaste (Fenster/LINUX)

Beitrag von bec »

Hallo,

Ich habe, bevor ich auf PureBasic gestossen bin, ein Programm in GFA-Basic für Windows geschrieben welches Koordinaten aus einer Liste auf dem Bildschirm als Punkte mit Punktnummern anzeigt. Das will ich mit PureBasic Linuxfähig machen. Das meiste lässt sich einfach portieren. Nur zwei Sachen hab ich noch nicht hingekriegt.

1. Was ist falsch an dem Codeschnipsel ? Der Text erscheint bei mir nicht im Window ! (Suse 10.1, KDE)

Code: Alles auswählen

If OpenWindow(0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If StartDrawing(WindowOutput(0))
      FrontColor($00FF00)
      DrawText(200, 200, "Test")  ; Warum kommt hier nichts ins Fenster ???
      StopDrawing()
   EndIf
   Repeat : Event = WaitWindowEvent() : Until  Event = #PB_Event_CloseWindow
EndIf

2. Die Function WaitWindowEvent() liefert bei mir keine Events wenn Maustasten gedrückt werden. (Bei Windows ja, bei Linux nein !!!)
Ist das ein Fehler in Pb oder mach ich was falsch ?


Bin für jeden Tip dankbar.

Titel angepasst - Kaeru fecit
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hallo,

zu 1.
Ich hab zwar nur Windows aber bei mir wird der Text angezeigt. Allerdings hätte ich ihn beinahe übersehen, da der Hintergrund vom Fenster hellgrau, der Texthintergrund weiß und der Text zu alledem auch noch Grün ist. Also keine geschickte Farbwahl. Möchte dich nicht als doof abstufen, aber es ist schon spät und vielleicht hast du es einfach übersehen.

zu 2.
(no comment) <- da kein Linux

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

zu 1.)..
es wird gezeichnet, aber nur bis es wieder zerstört wird.
du mußt es immer neu zeichnen, wenn du ein #PB_EVENT_REPAINT -ereignis erhälst.
aber die wesentlich bessere methode wäre, auf ein bild zu malen, und das
bild in einem ImageGadget aufzubewahren, dann übernimmt windows den
refresh.
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also, wenn man schon mauskrempel in nem fenster anzeigen will,
dann würde ich gleich ein stringgadget nehmen, und kein draw-krempel.

zu den mausbuttons, was für mausfunktionen verwendest du denn?

welches event fragst du denn ab, um den mausbutton zu checken?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
bec
Beiträge: 13
Registriert: 01.03.2007 23:00

Beitrag von bec »

Hallo Scarabol,

wie du schon selber sagst :du hast kein Linux.
Aber nur deswegen tue ich mir das an.
Das Progrämmchen war nur ein Beispiel.
Andere Farben hab ich schon getestet.
Bei mir kommt kein Text.
Das mit #PB_EVENT_REPAINT (danke #NULL)
enthält mein Programm ja schon. (Die Punkte zeichnet
es mit Plot() auch nach Fensterzerstörung. Nur die
Texte nicht)


Wenn das folgende Programm unter Windows läuft bekommt man
eindeutige events für alle 3 Tasten(maus down, maus up)
Unter Linux gibt es nur Nullen.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   Repeat
      Event = WaitWindowEvent()
      Debug event
   Until  Event = #PB_Event_CloseWindow
EndIf 
Hat jemand von euch Pb unter Linux laufen ?

.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

bec hat geschrieben: Wenn das folgende Programm unter Windows läuft bekommt man
eindeutige events für alle 3 Tasten(maus down, maus up)
Unter Linux gibt es nur Nullen.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   Repeat
      Event = WaitWindowEvent()
      Debug event
   Until  Event = #PB_Event_CloseWindow
EndIf 
Hat jemand von euch Pb unter Linux laufen ?

.
Es gibt unter PB dafuer keine Events. Wenn du mehr Events moechtes,
kommst du um einen Callback nicht herum.
bec
Beiträge: 13
Registriert: 01.03.2007 23:00

Beitrag von bec »

#NULL hat geschrieben:zu 1.)..
es wird gezeichnet, aber nur bis es wieder zerstört wird.
du mußt es immer neu zeichnen, wenn du ein #PB_EVENT_REPAINT -ereignis erhälst.
aber die wesentlich bessere methode wäre, auf ein bild zu malen, und das
bild in einem ImageGadget aufzubewahren, dann übernimmt windows den
refresh.

Hallo #Null,

das is es !!! Ein Imagegadget löst beide Probleme auf einmal.
Da kriegt man die Mausevents und DrawText() macht auch was er soll.
Es ist zwar nicht auf den ersten Blick einsichtig warum man es so machen
soll aber es geht.

Vielen Dank für eure schnelle Hilfe

.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Hallo,
@ bec :
also bei diesem Code

Code: Alles auswählen

If OpenWindow(0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   Repeat
      Event = WaitWindowEvent()
      Debug event
   Until  Event = #PB_Event_CloseWindow
EndIf 
der von dir stammt, bekomme ich Events geliefert. Wenn du eben da klickst, wo Events zu erwarten sind. Einfach im Fenster klicken, in dem sich kein Gadget befindet, kann auch schlecht was zurück melden.
Klick doch zum Beispiel mal auf die Titelleiste. Das ergab bei mir Meldungen.

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Einfach im Fenster klicken, in dem sich kein Gadget befindet, kann auch schlecht was zurück melden.

tut es aber unter windows...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Richtig. Wäre auch ganz interessant zu wissen, warum.
Also Portierbarkeit von Code zwischen Windows und Linux ist ja gegeben, aber vor Überraschungen ist man auf jeden Fall nicht sicher. Gegebenenfalls ist man gezwungen doch eine Menge zu ändern.

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Antworten