WM_MOUSEMOVE auf ScrollAreaGadget/ImageGadget begrenzen
Verfasst: 15.03.2014 15:01
Hallo Leute,
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.
Gruß,
Hugo
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