[gelöst] WaitWindowEvent - Eventliste?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Hatten wir schon mal irgendwo.

Code: Alles auswählen

*hWin.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,640,480,"",#WS_SYSMENU|#WS_SIZEBOX)
 
  CreateGadgetList(*hWin\l)
  ButtonGadget(0,10,10,100,100,"Blub1")
  ButtonGadget(1,10,110,100,100,"Blub2")
 
  CreateStatusBar(0,*hWin\l)
  AddStatusBarField(90)
 
  Repeat
    uMsg = WaitWindowEvent() 
   
    If #WM_MOUSEMOVE = uMsg
     
      x = DesktopMouseX()
      y = DesktopMouseY()
     
      Select WindowFromPoint_(x,y)
        Case GadgetID(0)
          StatusBarText(0, 0, "Blub1")
        Case GadgetID(1)
          StatusBarText(0, 0, "Blub2")
        Default
          StatusBarText(0, 0, Str(x) + ":" + Str(y))
      EndSelect
     
    EndIf
   
  Until uMsg = #WM_CLOSE

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Seit wann ist WindowFromPoint_(x,y) Crossplatform?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Noch nie,

War auch die frage welche Events auch noch gibt. Und die erweiterten Events sind halt Platformabhängig.

@Sebastian
win32.hlp noch aus den Internet laden und in das Help Verzeichnis von PB kopieren.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Sebastian hat geschrieben: Wo finde ich eine Liste mit allen Events, die zurückgeliefert werden können?
Eine Liste mit allen Events wird wohl kaum existieren, aber ein Beispielprogramm, das 184 "WM_"-Ereignisse erkennt und ausgibt, hat GedB im englischen Forum veröffentlicht:
http://www.purebasic.fr/english/viewtopic.php?t=12352

Der Beispiel-Code ist noch für PB 3.9x. Für PB 4 sollte "DefType.s Result" in "Protected Result.S" abgeändert werden und in der OpenWindow()-Anweisung der Fenstertitel "Split Picture" vor die Flags-Angabe "#PB_Window_ScreenCentered..." gesetzt werden...
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Okay. Das habe ich soweit verstanden. Vielen Dank! Das stellt mich jedoch vor ein Problem, welches ich aktuell zu lösen versuche:
Ich arbeite mit mehreren Fenstern, unter anderem mit einem WindowedScreen. Es ist nun für mich wichtig zu wissen, ob die Maus innerhalb des WindowedScreen ist (das ist über WindowMouseX()>-1 kein Problem) und, ob geklickt wurde (und da ist das Problem.) Ich habe es mit ExamineMouse() und MouseButton() versucht, diese Befehle werden in der Fensterumgebung nicht korrekt verarbeitet. Ich muss also den Mausklick über WaitWindowEvent() abgreifen. Unter WinXP ist das die Nr. 513 und die Nr. 514 ermittelt, ob die Maus wieder losgelassen wurde. Mit dieser Methode funktioniert es wunderbar. Die Furcht ist nun natürlich, dass es unter Win 9x/ME/Vista nicht laufen wird, weil hier vielleicht eine andere Nummer ausgegeben wird. Wie gehe ich nun damit um?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Es gibt folgende Konstanten dafür:

Code: Alles auswählen

#WM_LBUTTONDOWN
#WM_LBUTTONUP
#WM_LBUTTONDBLCLK
#WM_RBUTTONDOWN
#WM_RBUTTONUP
#WM_RBUTTONDBLCLK
Allerdings haben die ihre Werte noch nie geändert. Sonst müsste man ja
wirklich für jede Windows-Version andere Werte benutzen und neu
kompilieren, und Konstanten ändern ihre Werte ja bekanntlich nicht.
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

SUPER! Jetzt kann ich beruhigt weiterarbeiten. Klasse. Vielen Dank!
(Win 11 64-bit, PB 6.04 und 6.10)
Antworten