Seite 1 von 1

ImagePos stimmt nich mein fehler oder bug in PB?

Verfasst: 02.01.2005 07:23
von nicolaus
Erst mal allen ein gesundes neues jahr 2005.

So und nun mal ne frage zu dem nachstehenden code. Ist das mein fehler (was ich nich glaube) oder ein BUG in PB?
Ich erstelle ein Imagegadget und rufe dann wie im code zu sehen ist die Position des gadgets ab (per API) doch ist die in der höhe um 22 pixel falsch.

Hier mal der Code:

Code: Alles auswählen

img = CreateImage(0,40,40)
OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu,"test")

UseImage(0)
StartDrawing(ImageOutput())
Box(0,0,40,40,RGB($B,$C9,$1))
StopDrawing()

CreateGadgetList(WindowID())
pyhwnd=ImageGadget(0,100,100,40,40,UseImage(0))
TextGadget(1,10,10,150,15,"ImagePosTop = ")
TextGadget(2,10,35,150,15,"MousePosY = ")

GetWindowRect_(pyhwnd,rect.RECT)
SetGadgetText(1,"ImagePosTop = " + Str(rect\Top))

Repeat
  Event = WaitWindowEvent()
  SetGadgetText(2,"MousePosY = " + Str(WindowMouseY()))

Until Event = #PB_Event_CloseWindow
das gibt mir gerade ein wenig zu denken und is mir bei meinem akutellen project aufgefallen.

Gruss Nico

[Edit]
Wird noch schlimmer wenn ich auch noch ein menu mit einbaue.
hier mal der code mit menu:

Code: Alles auswählen

img = CreateImage(0,40,40)
OpenWindow(0,0,0,200,200,#PB_Window_SystemMenu,"test")
CreateMenu(0,WindowID())
MenuTitle("test")

UseImage(0)
StartDrawing(ImageOutput())
Box(0,0,40,40,RGB($B,$C9,$1))
StopDrawing()

CreateGadgetList(WindowID())
pyhwnd=ImageGadget(0,100,100,40,40,UseImage(0))
TextGadget(1,10,10,150,15,"ImagePosTop = ")
TextGadget(2,10,35,150,15,"MousePosY = ")

GetWindowRect_(pyhwnd,rect.RECT)
SetGadgetText(1,"ImagePosTop = " + Str(rect\Top))

Repeat
  Event = WaitWindowEvent()
  SetGadgetText(2,"MousePosY = " + Str(WindowMouseY()))

Until Event = #PB_Event_CloseWindow
[/edit]

Verfasst: 02.01.2005 07:34
von nicolaus
es scheit an der funktion GetWindowRect aus der API zu liegen. Bei der funktion wir vom absoluten 0-punkt ausgegangen das heist die titelbar wird mit eingerechnet denke ich mal.