Falsche Fensternummer über Scintillagadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Falsche Fensternummer über Scintillagadget

Beitrag von Josh »

Hallo Leute,

handelt es sich hier um einen Fehler oder sehe ich da etwas falsch. Wenn ich meine Maus in Fenster 2 bewege und dann direkt in das Scintillagadget von Fenster 1 fahre, bekomme ich als EventWindow noch immer Fenster 2. Erst wenn ich aus dem Scintillagadget rausfahre, schlägt die Anzeige auf Fenster 1 um.

Code: Alles auswählen

EnableExplicit

Define PosX.w
Define PosY.w
Define event.i

OpenWindow(1, #PB_Ignore, #PB_Ignore, 500, 200, "Fenster 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
InitScintilla()
ScintillaGadget(1, 10, 10, 480, 180, 0)

OpenWindow(2, #PB_Ignore, #PB_Ignore, 200, 500, "Fenster 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

Repeat
  event=WaitWindowEvent()

  Select event
    Case #WM_MOUSEMOVE
      PosX = EventlParam()       & $FFFF
      PosY = EventlParam() >> 16 & $FFFF
      Debug Str(EventWindow()) + " "  + Str(PosX) + " " + Str(PosY)
  EndSelect  

Until event = #PB_Event_CloseWindow

PB 4.60 x64
Win7 SP1
Benutzeravatar
mk-soft
Beiträge: 3902
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Falsche Fensternummer über Scintillagadget

Beitrag von mk-soft »

Dachte erste es ist ein Bug von Purebasic... Geht aber auch nicht mit API!

Code: Alles auswählen

EnableExplicit

Define.i PosX, PosY, event
Define.s temp
Define.i x, y, hWnd

OpenWindow(1, #PB_Ignore, #PB_Ignore, 500, 200, "Fenster 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
InitScintilla()
ScintillaGadget(1, 10, 10, 480, 180, 0)

OpenWindow(2, #PB_Ignore, #PB_Ignore, 200, 500, "Fenster 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

Repeat
  event=WaitWindowEvent()

  Select event
    Case #WM_MOUSEMOVE
      
      x = DesktopMouseX()
      y = DesktopMouseY()
      
      hWnd = WindowFromPoint_(y << 32 | x)
      Select hWnd
        Case WindowID(1)
          temp = "Fenster 1:"
        Case WindowID(2)
          temp = "Fenster 2:"
      EndSelect
     
      PosX = EventlParam()       & $FFFF
      PosY = EventlParam() >> 16 & $FFFF
      Debug temp + " "  + Str(X) + " " + Str(Y)
  EndSelect 

Until event = #PB_Event_CloseWindow
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3902
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Falsche Fensternummer über Scintillagadget

Beitrag von mk-soft »

Mit ContainerGadget geht es auch nicht, aber so...

Code: Alles auswählen

EnableExplicit

Define.i PosX, PosY, event
Define.s temp
Define.i x, y, hWnd

OpenWindow(1, #PB_Ignore, #PB_Ignore, 500, 200, "Fenster 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
InitScintilla()

ScintillaGadget(1, 10, 10, 480, 180, 0)

OpenWindow(2, #PB_Ignore, #PB_Ignore, 200, 500, "Fenster 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ScintillaGadget(2, 0, 0, 200, 500, 0)

Repeat
  event=WaitWindowEvent()

  Select event
    Case #WM_MOUSEMOVE
      
      x = DesktopMouseX()
      y = DesktopMouseY()
      
      hWnd = WindowFromPoint_(y << 32 | x)
      Select hWnd
        Case GadgetID(1)
          temp = "Fenster 1:"
        Case GadgetID(2)
          temp = "Fenster 2:"
      EndSelect
     
      PosX = EventlParam()       & $FFFF
      PosY = EventlParam() >> 16 & $FFFF
      Debug temp + " "  + Str(PosX) + " " + Str(PosY)
  EndSelect 

Until event = #PB_Event_CloseWindow
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Falsche Fensternummer über Scintillagadget

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Falsche Fensternummer über Scintillagadget

Beitrag von Josh »

Ich habe es mit den Windowevents dann schon hingebracht. Aber trotzdem danke.
Antworten