Seite 1 von 1

Falsche Fensternummer über Scintillagadget

Verfasst: 26.06.2012 16:54
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

Re: Falsche Fensternummer über Scintillagadget

Verfasst: 28.06.2012 08:45
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

Re: Falsche Fensternummer über Scintillagadget

Verfasst: 28.06.2012 08:59
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

Re: Falsche Fensternummer über Scintillagadget

Verfasst: 28.06.2012 09:09
von ts-soft

Re: Falsche Fensternummer über Scintillagadget

Verfasst: 28.06.2012 19:22
von Josh
Ich habe es mit den Windowevents dann schon hingebracht. Aber trotzdem danke.