Fragen und Bugreports zur PureBasic 4.0-Beta.
Jilocasin
Beiträge: 665 Registriert: 13.05.2006 16:04
Kontaktdaten:
Beitrag
von Jilocasin » 11.06.2006 12:08
Wie kann ich in 4.0 das abfragen?
Hab schon alles mögliche ausprobiert, aber da kommt weder bei "WindowEvent()" noch bei "EventType()" etwas raus!
Hilfe...
edel
Beiträge: 3667 Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:
Beitrag
von edel » 11.06.2006 12:12
>>
Hab schon alles mögliche ausprobiert
Sicher ?
Code: Alles auswählen
*hWindow.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,640,480,"")
CreateGadgetList(*hWindow\l)
ListIconGadget(0,0,0,640,480,"bla",200)
Repeat
uMsg = WaitWindowEvent()
If uMsg = #pb_event_gadget
If EventGadget() = 0
If EventType() = #PB_EventType_LeftDoubleClick
MessageRequester( "" , "Doppelklick")
EndIf
EndIf
EndIf
Until uMsg = #WM_CLOSE
Jilocasin
Beiträge: 665 Registriert: 13.05.2006 16:04
Kontaktdaten:
Beitrag
von Jilocasin » 11.06.2006 12:13
ja schon klar!
So hab ichs auch gemacht...
Das Problem ist, mein Source ist schon 2000 Zeilen lang..
Ich werd das jetzt noch ma gründlich scanne.....
// nachtrag
Hmm... ???
Ich glaube es liegt daran, dass ich das Gadget in einem Unterfenster hab!
Also im Hauptfenster ist mittels "SetParent_(Unterfenster,hWnd)" ein zweites Fenster drin. Darin befindet sich das Gadget.
@kaeru: daran liegts (leider) nicht !
Zuletzt geändert von
Jilocasin am 11.06.2006 12:16, insgesamt 2-mal geändert.
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 11.06.2006 12:15
o_O
öh.. die events beider fenster müssten trotzdem in deiner hauptschleife ankommen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Jilocasin
Beiträge: 665 Registriert: 13.05.2006 16:04
Kontaktdaten:
Beitrag
von Jilocasin » 11.06.2006 12:17
Wenn ich das so mache...
Code: Alles auswählen
...
Repeat
EventID = WindowEvent()
EventType = EventType()
EventWindowID = EventWindow()
Delay(10)
If EventID = #PB_Event_Gadget
Debug EventGadget()
EndIf
...
wird bei einem "normalen" Gadget die Nummer debuggt. Klicke ich aber aus das ListIcon so passiert garnix!
edel
Beiträge: 3667 Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:
Beitrag
von edel » 11.06.2006 12:23
Dann eben so.
Code: Alles auswählen
*hWindow0.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,360,240,"")
CreateGadgetList(*hWindow0\l)
ListIconGadget(0,0,0,360,240,"bla 1",200)
*hWindow1.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,360,240,"")
CreateGadgetList(*hWindow1\l)
ListIconGadget(1,0,0,360,240,"bla 2",200)
Repeat
uMsg = WaitWindowEvent()
If uMsg = #pb_event_gadget
If EventWindow() = *hWindow0
If EventGadget() = 0
If EventType() = #PB_EventType_LeftDoubleClick
MessageRequester( "" , "Doppelklick Fenster 1")
EndIf
EndIf
ElseIf EventWindow() = *hWindow1
If EventGadget() = 1
If EventType() = #PB_EventType_LeftDoubleClick
MessageRequester( "" , "Doppelklick Fenster 2")
EndIf
EndIf
EndIf
EndIf
Until uMsg = #WM_CLOSE
Jilocasin
Beiträge: 665 Registriert: 13.05.2006 16:04
Kontaktdaten:
Beitrag
von Jilocasin » 11.06.2006 12:34
Vardammt!
Ich kapiere einfach meinen Fehler nich!
Es müsste doch so funktionieren!
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 11.06.2006 12:41
@jilo
das Delay(10) brennt mir ja die pupillen aus. nimm doch mal sowas aus deiner event-schleife...
aber daran wirds nicht unbedingt liegen, wenn die anderen events gehen..
@edel
wäre es nicht evtl. besser EventWindow() nur einmal aufzurufen,
rückspeichern und später wert vergleichen?
und für so fenster-n00bs wie mich:
1. muss ich das handle als pointer speichern?
2. wieso #PB_Ignore? setzt das das fenster an die standard-stelle, also, immer eine leistenbreite nach rechts unten und dann oben wieder anfangen?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Jilocasin
Beiträge: 665 Registriert: 13.05.2006 16:04
Kontaktdaten:
Beitrag
von Jilocasin » 11.06.2006 12:52
kaeru hat geschrieben: nimm doch mal sowas aus deiner event-schleife
Ups.. jup stimmt.
Bis jetzt hatte ich 3.3. Da gab es den Zeit-Parameter bei "WaitWindowEvent()" noch nich. Werd ich ändern!
Ich hab mal zum Testen ein ganz eigenes, unabhängiges Gadget auf dem Hauptfenster erstellt. Bringt überhaupt nichts! Es kommt hier einfach bei ListIcons/ListViews kein Event zustande!
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 11.06.2006 12:55
> Bis jetzt hatte ich 3.3. Da gab es den Zeit-Parameter bei "WaitWindowEvent()" noch nich.
ich hab auch erst seit gestern 4.0, aber ich hab nie ein Delay mit mehr als 0 in einer event-schleife benutzt.
Delay(0) genügt völlig, um die CPU zu entlasten!
jeder höhere wert verschluckt nur events.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.