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

