nach langer Zeit versuche ich mal wieder ein PureBasic Projekt anzugehen. Dabei bin ich auf etwas gestoßen, was ich nun schon seit Tagen versuche zu verstehen bzw. hinzubekommen.
Im Code-Beispiel wird ein Window, eine StatusBar, ein Menü, eine ToolBar und ein ScrollAreaGadget mit Image erstellt.
Wenn ich nun die Maus bewege wird das schön im Debugger-Fenster angezeigt. Was ich allerdings nicht verstehe ist, dass wenn ich in den vertikalen oder horizontalen Schieberegler-Bereich komme, diese nicht mehr angezeigt werden (so soll das auch sein), wenn ich aber dann weiter in den StatusBar Bereich komme wieder Mouse-Events erzeugt werden. Genau so ist es im oberen ToolBar-Bereich. Der Menü-Bereich dagegen ist wieder ok.
Was ich nun schon lange versuche ist, den Bereich der Maus auf den sichtbaren Image-Bereich zu begrenzen. Vielleicht hat ja einer von euch eine Idee dazu.
Code: Alles auswählen
EnableExplicit
#WindowMain = 1
#StatusBar = 2
#Menu = 3
#ToolBox = 4
#Image = 5
#GadScroll = 1
#GadImage = 2
Global x_Win.i = 100
Global y_Win.i = 200
Global h_Win.i = 700
Global w_Win.i = 1200
Global x_Max.i = 5000
Global y_Max.i = 4000
Global w_Par.i, l_Par.i, x_Mouse.i, y_Mouse.i
If OpenWindow( #WindowMain, x_Win, y_Win, w_Win, h_Win, "Test", #PB_Window_SystemMenu )
If CreateStatusBar( #StatusBar, WindowID( #WindowMain ) )
AddStatusBarField( 200 )
AddStatusBarField( 200 )
AddStatusBarField( 200 )
If CreateImageMenu( #Menu, WindowID( #WindowMain ), #PB_Menu_ModernLook )
MenuTitle( "Datei" )
MenuItem( 1, "Laden..." )
MenuItem( 2, "Speichern..." )
If CreateTB( #ToolBox, WindowID( #WindowMain ), 20, 20, #TBpro_BORDER )
AddTBtextButton( 1, "Laden...", #TBpro_BUTTON )
AddTBtextButton( 2, "Speichern...", #TBpro_BUTTON )
If CreateImage( #Image, x_Max, y_Max )
If StartDrawing( ImageOutput( #Image ) )
Box( 0, 0, x_Max, y_Max, RGB( 190, 190, 190 ) )
StopDrawing()
If ScrollAreaGadget( #GadScroll, 0, TBheight( #ToolBox ) - 1, WindowWidth( #WindowMain ), WindowHeight( #WindowMain ) - ( TBheight( #ToolBox ) + StatusBarHeight( #StatusBar ) + MenuHeight() ), x_Max, y_Max, 10, #PB_ScrollArea_Single )
ImageGadget( #GadImage, 0, 0, x_Max, y_Max, ImageID( #Image ) )
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
CloseWindow( #WindowMain )
End
Case #WM_MOUSEMOVE
If EventWindow() = #WindowMain
l_Par = EventlParam()
x_Mouse = l_Par & $FFFF
y_Mouse = ( l_Par >> 16 ) & $FFFF
Debug "x_Mouse: " + Str( x_Mouse ) + ", y_Mouse: " + Str( y_Mouse )
EndIf
EndSelect
ForEver
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
Gruß,
Hugo