Doppelklick auf ListIcon?

Fragen und Bugreports zur PureBasic 4.0-Beta.
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Doppelklick auf ListIcon?

Beitrag von Jilocasin »

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... :cry:
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

>> 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 »

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.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

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 »

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!
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

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 »

Vardammt!
Ich kapiere einfach meinen Fehler nich!
Es müsste doch so funktionieren!
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@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 »

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!
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> 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.
Gesperrt