MouseButtonState

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
mestnyi
Addict
Addict
Posts: 1098
Joined: Mon Nov 25, 2013 6:41 am

MouseButtonState

Post by mestnyi »

please add :) :) :)
appeal to colleagues if it is useful, and you ask to add :D

Code: Select all

EnableExplicit

Enumeration #PB_Event_FirstCustomValue
  #PB_Event_LeftButtonDown
  #PB_Event_LeftButtonUp
  #PB_Event_RightButtonDown
  #PB_Event_RightButtonUp
  #PB_Event_MidleButtonDown
  #PB_Event_MidleButtonUp
EndEnumeration

Procedure MouseButtonState( EnterWindow, EnterGadget=-1 )
  Static State, Gadget =-1
  Protected Click
  If IsWindow(EnterWindow)
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows 
      If      (GetAsyncKeyState_(#VK_LBUTTON) >> 15 & 1) :Click = #PB_Event_LeftButtonDown
      ElseIf  (GetAsyncKeyState_(#VK_RBUTTON) >> 15 & 1) :Click = #PB_Event_RightButtonDown
      ElseIf  (GetAsyncKeyState_(#VK_MBUTTON) >> 15 & 1) :Click = #PB_Event_MidleButtonDown
      EndIf  
    CompilerElseIf #PB_Compiler_OS = #PB_OS_Linux
      Protected.l x,y,mask,*Window.GTKWindow = WindowID(EnterWindow) 
      gdk_window_get_pointer_(*Window\bin\child\window, @x, @y, @mask)
      If     (mask & #GDK_BUTTON1_MASK) :Click = #PB_Event_LeftButtonDown
      ElseIf (mask & #GDK_BUTTON3_MASK) :Click = #PB_Event_RightButtonDown
      ElseIf (mask & #GDK_BUTTON2_MASK) :Click = #PB_Event_MidleButtonDown
      EndIf
    CompilerEndIf
    If Click 
      If Click = #PB_Event_LeftButtonDown 
        If State <> Click :State = Click :Gadget = EnterGadget
          PostEvent(#PB_Event_LeftButtonDown, EnterWindow,Gadget)
        EndIf
      EndIf
      If Click = #PB_Event_RightButtonDown
        If State <> Click :State = Click :Gadget = EnterGadget
          PostEvent(#PB_Event_RightButtonDown, EnterWindow,Gadget) 
        EndIf
      EndIf
      If Click = #PB_Event_MidleButtonDown
        If State <> Click :State = Click :Gadget = EnterGadget
          PostEvent(#PB_Event_MidleButtonDown, EnterWindow,Gadget) 
        EndIf
      EndIf
    Else
      If State = #PB_Event_LeftButtonDown  :State = #PB_Event_LeftButtonUp
        PostEvent(#PB_Event_LeftButtonUp, EnterWindow,Gadget) 
      EndIf
      If State = #PB_Event_RightButtonDown :State = #PB_Event_RightButtonUp
        PostEvent(#PB_Event_RightButtonUp, EnterWindow,Gadget) 
      EndIf
      If State = #PB_Event_MidleButtonDown :State = #PB_Event_MidleButtonUp
        PostEvent(#PB_Event_MidleButtonUp, EnterWindow,Gadget) 
      EndIf
    EndIf
  EndIf
  ProcedureReturn Click
EndProcedure

Procedure IsMouseEnterGadget(Gadget) ;Returns TRUE if cursor on the Gadget
    Protected MouseX,MouseY, GadgetX,GadgetY,GadgetWidth,GadgetHeight
    MouseX = DesktopMouseX() 
    MouseY = DesktopMouseY()
    
    If (MouseX <>-1 And MouseY <>-1) 
      If IsGadget(Gadget); IsGadgetVisible(Gadget)
        GadgetX = GadgetX(Gadget ,#PB_Gadget_ScreenCoordinate)
        GadgetY = GadgetY(Gadget ,#PB_Gadget_ScreenCoordinate)
        GadgetWidth = GadgetX + GadgetWidth(Gadget)
        GadgetHeight = GadgetY + GadgetHeight(Gadget)
      EndIf
      If (MouseX >= GadgetX And MouseY >= GadgetY And 
          MouseX <= GadgetWidth And MouseY <= GadgetHeight)
        ProcedureReturn #True
      EndIf
    EndIf
  EndProcedure

CompilerIf #PB_Compiler_IsMainFile
  Define wFlags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
  If OpenWindow(1, #PB_Any, #PB_Any, 300, 200, "Mouse Button State demo", wFlags)
    ResizeWindow(1, WindowX(1) - 160, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    Define Flag
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
      Flag = #WS_CLIPSIBLINGS
    CompilerEndIf
    ButtonGadget(2,10,10,105,35,"ButtonGadget2",Flag )
    
    OpenWindow(2, #PB_Any, #PB_Any, 300, 200, "Mouse Button State demo", wFlags)
    ResizeWindow(2, WindowX(2) + 160, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    
    
    ButtonGadget(1,10,10,105,35,"ButtonGadget1",Flag )
    HideWindow(1,0)
    Define EnterGadget
    
    Repeat 
      If IsMouseEnterGadget(1)
        EnterGadget = 1
      ElseIf IsMouseEnterGadget(2)
        EnterGadget = 2
      Else
        EnterGadget = -1
      EndIf
      
      MouseButtonState(GetActiveWindow(),EnterGadget)
      
      Select WaitWindowEvent()
        Case #PB_Event_LeftButtonDown :Debug "#PB_Event_LeftButtonDown Window " +EventWindow()+ " Gadget " +EventGadget()
        Case #PB_Event_LeftButtonUp :Debug "#PB_Event_LeftButtonUp Window " +EventWindow()+ " Gadget " +EventGadget()
        Case #PB_Event_RightButtonDown :Debug "#PB_Event_RightButtonDown Window " +EventWindow()+ " Gadget " +EventGadget()
        Case #PB_Event_RightButtonUp :Debug "#PB_Event_RightButtonUp Window " +EventWindow()+ " Gadget " +EventGadget()
        Case #PB_Event_MidleButtonDown :Debug "#PB_Event_MidleButtonDown Window " +EventWindow()+ " Gadget " +EventGadget()
        Case #PB_Event_MidleButtonUp :Debug "#PB_Event_MidleButtonUp Window " +EventWindow()+ " Gadget " +EventGadget()
          
        Case #PB_Event_CloseWindow
          Break
      EndSelect
    ForEver
  EndIf
CompilerEndIf
mestnyi
Addict
Addict
Posts: 1098
Joined: Mon Nov 25, 2013 6:41 am

Re: MouseButtonState

Post by mestnyi »

Can you comment on my code, that is how it should be because it is not necessary.

Code: Select all

DeclareModule Mouse
  Enumeration #PB_Event_FirstCustomValue
    #PB_Event_MouseMove
  EndEnumeration
EndDeclareModule

Module Mouse
  Global EnterGadgetID
  
  Procedure IDGadget( GadgetID )
    
    If IsGadget( GetProp_( GadgetID , "PB_ID")) And GadgetID = GadgetID(GetProp_( GadgetID , "PB_ID"))
      ProcedureReturn GetProp_( GadgetID , "PB_ID" )
    EndIf
    
    ProcedureReturn - 1
  EndProcedure
  
  Procedure IDWindow( WindowID )
    
    If IsWindow( GetProp_( WindowID , "PB_WindowID") - 1) And WindowID = WindowID(GetProp_( WindowID , "PB_WindowID") - 1)
      ProcedureReturn GetProp_( WindowID , "PB_WindowID" ) - 1
    EndIf
    
    ProcedureReturn - 1
  EndProcedure
  
  
  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    Procedure WindowPointCallBack( GadgetID, lParam )
      Protected Gadget, GetWindow
      Protected WindowRect.RECT , NextRect.RECT, Pt.POINT
      
      If GadgetID : Gadget = IDGadget( GadgetID )
        If GetWindowLongPtr_( GadgetID, #GWL_STYLE ) & #WS_CLIPSIBLINGS = #False 
          If IsGadget( Gadget ) 
            Select GadgetType( Gadget )
              Case #PB_GadgetType_ComboBox
                Protected Height = GadgetHeight( Gadget )
            EndSelect
          EndIf
          
          SetWindowLongPtr_( GadgetID, #GWL_STYLE, GetWindowLongPtr_( GadgetID, #GWL_STYLE ) | #WS_CLIPSIBLINGS | #WS_CLIPCHILDREN )
          
          If Height
            ResizeGadget( Gadget, #PB_Ignore, #PB_Ignore, #PB_Ignore, Height )
          EndIf
          
          SetWindowPos_( GadgetID, #GW_HWNDFIRST, 0,0,0,0, #SWP_NOMOVE|#SWP_NOSIZE )
        EndIf
        
        GetCursorPos_(Pt)    
        GetWindowRect_( GadgetID, @WindowRect )
        
        If PtInRect_( @WindowRect, Pt\x | (Pt\y<<32) ) 
          If IsGadget( Gadget )
            GetWindowRect_( GetWindow_( GadgetID, #GW_HWNDPREV), @NextRect )
            If PtInRect_( @NextRect, Pt\x | (Pt\y<<32) ) 
              GetWindow = GetWindow_( GadgetID, #GW_HWNDPREV)
            Else
              GetWindow = GadgetID
            EndIf
            
            If GetWindow = GadgetID  
              If IsWindowVisible_( GadgetID )
                EnterGadgetID = GadgetID
              EndIf
            Else
            EndIf
          Else
            If IsGadget(IDGadget(GetWindow_( GadgetID, #GW_HWNDNEXT)))
              If IsWindowVisible_( GadgetID )
                EnterGadgetID = GetWindow_( GadgetID, #GW_HWNDNEXT)
              EndIf
            EndIf
            
          EndIf
        Else
          GetWindowRect_( EnterGadgetID, @WindowRect )
          If PtInRect_( @WindowRect, Pt\x | (Pt\y<<32) ) = 0
            EnterGadgetID = 0
          EndIf
        EndIf
        
        
        
      EndIf
      
      ProcedureReturn GadgetID
    EndProcedure
  CompilerEndIf
  
  
  Procedure EnterGadgetID( WindowID )
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
      EnumChildWindows_( WindowID, @WindowPointCallBack(), 0 )
      ProcedureReturn  EnterGadgetID
    CompilerEndIf
  EndProcedure
  
  Procedure MOUSE_LL(nCode, wParam, *ms.MOUSEHOOKSTRUCT)
    Static Click, Queue, GadgetWindow =- 1, LeaveWindow =- 1, LeaveGadget =- 1, Window =- 1, Gadget =- 1
    Protected EnterWindowID = GetAncestor_( WindowFromPoint_( *ms\pt\x | (*ms\pt\y<<32)) , #GA_ROOT )
    Protected EnterGadgetID = EnterGadgetID( EnterWindowID )
    Protected EnterWindow = IDWindow( EnterWindowID )
    Protected EnterGadget = IDGadget( EnterGadgetID )
    
    Select wParam
      Case #WM_LBUTTONDOWN,
           #WM_RBUTTONDOWN,
           #WM_MBUTTONDOWN 
        
        Select wParam
          Case #WM_LBUTTONDOWN : Click = 1 : Queue+1
          Case #WM_RBUTTONDOWN : Click = 2 : Queue+1
          Case #WM_MBUTTONDOWN : Click = 16
        EndSelect
        
        If Queue >= 2
          Click = 3
        EndIf
        
        If EnterGadget >= 0
          Gadget = EnterGadget
          GadgetWindow = EnterWindow
        Else
          Window = EnterWindow
        EndIf
    EndSelect     
    
    If Gadget =- 1 And Window =- 1
      ; mouse enter\leave window
      If LeaveWindow <> EnterWindow
        If LeaveWindow >= 0 : PostEvent( #PB_Event_Gadget, LeaveWindow, #PB_Ignore, #PB_EventType_MouseLeave, 0 ) : EndIf
        If EnterWindow >= 0 : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_MouseEnter, 0 ) : EndIf
        LeaveWindow = EnterWindow 
      EndIf
      
      ; mouse enter\leave gadget
      If LeaveGadget <> EnterGadget
        If LeaveGadget >= 0 : PostEvent( #PB_Event_Gadget, EnterWindow, LeaveGadget, #PB_EventType_MouseLeave, 0 ) : EndIf
        If EnterGadget >= 0 : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_MouseEnter, 0 ) : EndIf
        LeaveGadget = EnterGadget 
      EndIf
      
      ; mouse move\down\up gadget
      If EnterGadget >= 0
        Select wParam
          Case #WM_MOUSEMOVE : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_MouseMove, 0 )
          Case #WM_LBUTTONDOWN : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_LeftButtonDown, 0 )
          Case #WM_LBUTTONUP : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_LeftButtonUp, 0 )
          Case #WM_RBUTTONDOWN : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_RightButtonDown, 0 )
          Case #WM_RBUTTONUP : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_RightButtonUp, 0 )
        EndSelect     
      Else
        ; mouse move\down\up window
        If EnterWindow >= 0
          Select wParam
            Case #WM_MOUSEMOVE : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_MouseMove, 0 )
            Case #WM_LBUTTONDOWN : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_LeftButtonDown, 0 )
            Case #WM_LBUTTONUP : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_LeftButtonUp, 0 )
            Case #WM_RBUTTONDOWN : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_RightButtonDown, 0 )
            Case #WM_RBUTTONUP : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_RightButtonUp, 0 )
          EndSelect     
        EndIf
        
      EndIf
      
    ElseIf Gadget >= 0
      Select wParam
        Case #WM_MOUSEMOVE : PostEvent( #PB_Event_Gadget, GadgetWindow, Gadget, #PB_EventType_MouseMove, Click )
        Case #WM_LBUTTONDOWN : PostEvent( #PB_Event_Gadget, GadgetWindow, Gadget, #PB_EventType_LeftButtonDown, 0 )
        Case #WM_LBUTTONUP : PostEvent( #PB_Event_Gadget, GadgetWindow, Gadget, #PB_EventType_LeftButtonUp, 0 )
        Case #WM_RBUTTONDOWN : PostEvent( #PB_Event_Gadget, GadgetWindow, Gadget, #PB_EventType_RightButtonDown, 0 )
        Case #WM_RBUTTONUP : PostEvent( #PB_Event_Gadget, GadgetWindow, Gadget, #PB_EventType_RightButtonUp, 0 )
      EndSelect 
    ElseIf Window >= 0
      Select wParam
        Case #WM_MOUSEMOVE : PostEvent( #PB_Event_Gadget, Window, #PB_Ignore, #PB_EventType_MouseMove, Click )
        Case #WM_LBUTTONDOWN : PostEvent( #PB_Event_Gadget, Window, #PB_Ignore, #PB_EventType_LeftButtonDown, 0 )
        Case #WM_LBUTTONUP : PostEvent( #PB_Event_Gadget, Window, #PB_Ignore, #PB_EventType_LeftButtonUp, 0 )
        Case #WM_RBUTTONDOWN : PostEvent( #PB_Event_Gadget, Window, #PB_Ignore, #PB_EventType_RightButtonDown, 0 )
        Case #WM_RBUTTONUP : PostEvent( #PB_Event_Gadget, Window, #PB_Ignore, #PB_EventType_RightButtonUp, 0 )
      EndSelect 
    EndIf
    
    Select wParam
      Case #WM_LBUTTONUP,
           #WM_RBUTTONUP,
           #WM_MBUTTONUP
        Click = 0
        Queue = 0
        GadgetWindow =- 1
        Gadget =- 1
        Window =- 1
        
        If LeaveWindow <> EnterWindow
          If LeaveWindow >= 0 : PostEvent( #PB_Event_Gadget, LeaveWindow, #PB_Ignore, #PB_EventType_MouseLeave, 0 ) : EndIf
          If EnterWindow >= 0 : PostEvent( #PB_Event_Gadget, EnterWindow, #PB_Ignore, #PB_EventType_MouseEnter, 0 ) : EndIf
          LeaveWindow = EnterWindow 
        EndIf
        If LeaveGadget <> EnterGadget
          If LeaveGadget >= 0 : PostEvent( #PB_Event_Gadget, EnterWindow, LeaveGadget, #PB_EventType_MouseLeave, 0 ) : EndIf
          If EnterGadget >= 0 : PostEvent( #PB_Event_Gadget, EnterWindow, EnterGadget, #PB_EventType_MouseEnter, 0 ) : EndIf
          LeaveGadget = EnterGadget 
        EndIf
    EndSelect
    
    ProcedureReturn CallNextHookEx_(@MOUSE_LL(), nCode, wParam, *ms)
  EndProcedure
  
  Procedure Mouse(nCode, wParam, *ms.MOUSEHOOKSTRUCT)
    Protected EnterWindowID = WindowFromPoint_( *ms\pt\x | (*ms\pt\y<<32))
    If EnterWindowID = GetAncestor_(  EnterWindowID, #GA_ROOT )
    Else
      ProcedureReturn 1 
    EndIf
    
  EndProcedure
  
  
  
  Procedure WinCallback(hWnd, uMsg, WParam, LParam) 
    Static g_hook, g_hhook
    
    If uMsg = #WM_ACTIVATEAPP
      If g_hook = 0 : g_hook = SetWindowsHookEx_(#WH_MOUSE_LL, @MOUSE_LL(), 0, 0) : EndIf
      If g_hhook = 0 : g_hhook = SetWindowsHookEx_(#WH_MOUSE, @MOUSE(), GetModuleHandle_(0), GetWindowThreadProcessId_(hWnd, #Null)) : EndIf
      
    ElseIf uMsg = #WM_DESTROY
      If(g_hook)
        UnhookWindowsHookEx_(g_hook)
        g_hook = #Null
      EndIf
      If(g_hhook)
        UnhookWindowsHookEx_(g_hhook)
        g_hhook = #Null
      EndIf
    EndIf 
    
    ProcedureReturn #PB_ProcessPureBasicEvents 
  EndProcedure 
  SetWindowCallback(@WinCallback())    ; activate the callback
EndModule  
#PB_Event_MouseMove = Mouse::#PB_Event_MouseMove




Procedure Event_Gadget()
  Protected MouseX, MouseY, Steps = 5
  Static Check, OffsetX, OffsetY
  Debug "EventGadget "+EventGadget() +" EventType "+EventType() +" EventData "+ EventData()
  
      Select EventType()
        Case  #PB_EventType_LeftButtonUp : Check = #False
        Case  #PB_EventType_LeftButtonDown : Check = #True
          If IsGadget(EventGadget())
            OffsetX = WindowMouseX(EventWindow()) - (GadgetX(EventGadget(), #PB_Gadget_ContainerCoordinate))
            OffsetY = WindowMouseY(EventWindow()) - (GadgetY(EventGadget(), #PB_Gadget_ContainerCoordinate))
          EndIf
          
        Case  #PB_EventType_MouseMove
          If Check And IsGadget( EventGadget() )
            MouseX = (WindowMouseX(EventWindow())-OffsetX)
            MouseY = (WindowMouseY(EventWindow())-OffsetY)
            
            ResizeGadget( EventGadget(), ((MouseX / Steps) * Steps), ((MouseY / Steps) * Steps), #PB_Ignore, #PB_Ignore)
          EndIf
          
      EndSelect
  
EndProcedure

Procedure Event_Window()
  
  If EventGadget() = #PB_Ignore
    Debug "EventWindow "+EventWindow() +" EventType "+EventType() +" EventData "+ EventData()
  EndIf
  
EndProcedure

If OpenWindow(2, 0, 0, 200, 100, "0", #PB_Window_MinimizeGadget | #PB_Window_SizeGadget) 
  ButtonGadget(1,10,10,100,30,"Button")
  BindGadgetEvent(1, @Event_Gadget())
  
  If OpenWindow(10, 0, 0, 995, 455, "Position de la souris sur la fenêtre", #PB_Window_SizeGadget | #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible | #PB_Window_NoActivate)
    ButtonGadget(#PB_GadgetType_Button, 5, 35, 160,70, "ButtonGadget_"+Str(#PB_GadgetType_Button) ) ; ok
    StringGadget(#PB_GadgetType_String, 5, 80, 160,70, "StringGadget_"+Str(#PB_GadgetType_String))  ; ok
    TextGadget(#PB_GadgetType_Text, 5, 155, 160,70, "TextGadget_"+Str(#PB_GadgetType_Text))         ; ok
    CheckBoxGadget(#PB_GadgetType_CheckBox, 5, 230, 160,70, "CheckBoxGadget_"+Str(#PB_GadgetType_CheckBox) ) ; ok
    OptionGadget(#PB_GadgetType_Option, 5, 305, 160,70, "OptionGadget_"+Str(#PB_GadgetType_Option) )         ; ok
    ListViewGadget(#PB_GadgetType_ListView, 5, 380, 160,70 )                                                 ; ok
    
    FrameGadget(#PB_GadgetType_Frame, 170, 5, 160,70, "FrameGadget_"+Str(#PB_GadgetType_Frame) )
    
    ComboBoxGadget(#PB_GadgetType_ComboBox, 170, 80, 160,70 ) ; ok
    ImageGadget(#PB_GadgetType_Image, 170, 155, 160,70,0,#PB_Image_Border ) ; ok
    HyperLinkGadget(#PB_GadgetType_HyperLink, 170, 230, 160,70,"HyperLinkGadget_"+Str(10),0,#PB_HyperLink_Underline ) ; ok
    ContainerGadget(#PB_GadgetType_Container, 170, 305, 160,70,#PB_Container_Flat ) : ButtonGadget(301, 0, 0, 50,20, "ButtonGadget" ) :CloseGadgetList()                ; ContainerGadget ; ok
    ListIconGadget(#PB_GadgetType_ListIcon, 170, 380, 160,70,"ListIconGadget_"+Str(12),60 )                                                                             ; ok
    
    IPAddressGadget(#PB_GadgetType_IPAddress, 335, 5, 160,70 ) : SetGadgetState(#PB_GadgetType_IPAddress, MakeIPAddress(1, 2, 3, 4))    ; ok
    
    ProgressBarGadget(#PB_GadgetType_ProgressBar, 335, 80, 160,70,0,0 )
    
    ScrollBarGadget(#PB_GadgetType_ScrollBar, 335, 155, 160,70,0,100,10 )
    
    ScrollAreaGadget(#PB_GadgetType_ScrollArea, 335, 230, 160,70,180,90,1,#PB_ScrollArea_Flat ) : ButtonGadget(201, 0, 0, 50,20, "ButtonGadget" ) : CloseGadgetList()
    ;SetGadgetColor(#PB_GadgetType_ScrollArea, #PB_Gadget_BackColor, $8551E5 )
    
    TrackBarGadget(#PB_GadgetType_TrackBar, 335, 305, 160,70,0,0 )
    WebGadget(#PB_GadgetType_Web, 335, 380, 160,70,"http://www.purebasic.com" )
    ;     
    ButtonImageGadget(#PB_GadgetType_ButtonImage, 500, 5, 160,70,0 )
    CalendarGadget(#PB_GadgetType_Calendar, 500, 80, 160,70 )
    DateGadget(#PB_GadgetType_Date, 500, 155, 160,70 )
    EditorGadget(#PB_GadgetType_Editor, 500, 230, 160,70 )
    ExplorerListGadget(#PB_GadgetType_ExplorerList, 500, 305, 160,70,"" )
    ExplorerTreeGadget(#PB_GadgetType_ExplorerTree, 500, 380, 160,70,"" )
    
    ExplorerComboGadget(#PB_GadgetType_ExplorerCombo, 665, 5, 160,70,"/home/" )
    ;gtk_entry_set_text_(GadgetID(#PB_GadgetType_ExplorerCombo),"/home/" )
    
    SpinGadget(#PB_GadgetType_Spin, 665, 80, 160,70,0,10 )
    TreeGadget(#PB_GadgetType_Tree, 665, 155, 160,70 )
    PanelGadget(#PB_GadgetType_Panel, 665, 230, 160,70 ) :AddGadgetItem(#PB_GadgetType_Panel, -1, "Panel") : ButtonGadget(401, 0, 0, 50,20, "ButtonGadget" ) :AddGadgetItem(#PB_GadgetType_Panel, -1, "Panel2") :CloseGadgetList()
    
    ButtonGadget(291, 0, 0, 0,20, "ButtonGadget" )
    StringGadget(292, 0, 0, 0,20, "StringGadget")
    SplitterGadget(#PB_GadgetType_Splitter, 665, 305, 160,70,292,291 ) 
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
      Define UseID = UseGadgetList(0)
      MDIGadget(#PB_GadgetType_MDI, 665, 380, 160,70,1, 2);, #PB_MDI_AutoSize)
      AddGadgetItem(#PB_GadgetType_MDI, #PB_Any, "child window")
      UseGadgetList(UseID)
      
    CompilerEndIf
    InitScintilla()
    ScintillaGadget(#PB_GadgetType_Scintilla, 830, 5, 160,70,0 )
    ShortcutGadget(#PB_GadgetType_Shortcut, 830, 80, 160,70 ,-1)
    CanvasGadget(#PB_GadgetType_Canvas, 830, 155, 160,70 )
    
    
    Define  i
    For i=1 To #PB_GadgetType_Canvas
      ;SetIDGadget( i )
      BindGadgetEvent( i, @Event_Gadget() )
      
    Next
    ;   SetIDGadget( 201 )
    ;   SetIDGadget( 301 )
    ;   SetIDGadget( 401 )
    ;   
    ;   BindGadgetEvent( 201, @EventButton() )
    ;   BindGadgetEvent( 301, @EventButton() )
    ;   BindGadgetEvent( 401, @EventButton() )
    
    HideWindow( 10 , 0 )
    ;   SetIDWindow( 10 )
  EndIf   
  
   BindEvent( #PB_Event_Gadget, @Event_Window() )
     
  Repeat 
    Select WaitWindowEvent() 
      Case #PB_Event_MouseMove
        Debug "EventWindow = "+EventWindow()+" Event = #PB_Event_MouseMove EventData = "+EventData()
      Case #PB_Event_CloseWindow 
        End 
    EndSelect 
  ForEver 
  
EndIf 


Mesa
Enthusiast
Enthusiast
Posts: 433
Joined: Fri Feb 24, 2012 10:19 am

Re: MouseButtonState

Post by Mesa »

Yes yes yes, should be great ! :D :D :D

M.
Post Reply