Page 1 of 1

Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 5:36 am
by Fangbeast
I want to move a borderless form window by clicking on and holding down the mouse on a imagegadget.

Does anyone know how to do this? (I don't know what I am looking for.

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 6:23 am
by Dude
Based on someone else's code:

Code: Select all

If OpenWindow(1,150,150,300,100,"",#PB_Window_BorderLess)
  CreateImage(1,100,50,24,#Red)
  ImageGadget(1,10,10,100,50,ImageID(1))
  Repeat
    event=WaitWindowEvent()
    If GetAsyncKeyState_(#VK_LBUTTON)<>0
      GetCursorPos_(@cursor_pos.POINT)
      ScreenToClient_(WindowID(1),@cursor_pos)
      hChild=RealChildWindowFromPoint_(WindowID(1),PeekQ(cursor_pos))
      If hChild=GadgetID(1)
        ReleaseCapture_()
        SendMessage_(WindowID(1),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
      EndIf
    EndIf
  Until event=#PB_Event_CloseWindow
EndIf

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 6:33 am
by RASHAD
Hi Fang
Cross platform

Code: Select all

If OpenWindow(0, 0, 0, 400, 400, "Moving Borderless Window", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
  SetWindowColor(0,$B9B9B9)
  CanvasGadget(0,10,10,380,40)
  CanvasGadget(1,10,350,40,40)
   
  StartDrawing(CanvasOutput(0))
    Box(0,0,OutputWidth(),OutputHeight(),$0F)
    Box(2,2,OutputWidth()-4,OutputHeight()-4,$B3FEA8)
  StopDrawing()
  
  StartDrawing(CanvasOutput(1))
    Box(0,0,OutputWidth(),OutputHeight(),$0F)
    Box(2,2,OutputWidth()-4,OutputHeight()-4,$111FFF)
    DrawingMode(#PB_2DDrawing_Transparent )
    DrawText(15,12,"X",$FFFFFF)
  StopDrawing()
   
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          Select EventType()
            Case #PB_EventType_LeftButtonDown
              If run = 0
                run = 1
                ox = WindowMouseX(0)
                oy = WindowMouseY(0)
              EndIf
              
            Case #PB_EventType_LeftButtonUp
              run = 0
              
            Case #PB_EventType_MouseMove
              If GetGadgetAttribute(0,#PB_Canvas_Buttons ) =  #PB_Canvas_LeftButton
                ResizeWindow(0,DesktopMouseX()-ox,DesktopMouseY()-oy,#PB_Ignore,#PB_Ignore)
              EndIf
          EndSelect
          
        Case 1
          Select EventType()
            Case #PB_EventType_LeftButtonDown
              End
          EndSelect            
      EndSelect
  EndSelect
ForEver
EndIf

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 8:59 am
by Fangbeast
Thanks Dude and RASHAD. I now have something to do before my minority intellect ossifies:):)

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 9:09 am
by Fangbeast
RASHAD wrote:Hi Fang
Cross platform

Code: Select all

If OpenWindow(0, 0, 0, 400, 400, "Moving Borderless Window", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
  SetWindowColor(0,$B9B9B9)
  CanvasGadget(0,10,10,380,40)
  CanvasGadget(1,10,350,40,40)
   
  StartDrawing(CanvasOutput(0))
    Box(0,0,OutputWidth(),OutputHeight(),$0F)
    Box(2,2,OutputWidth()-4,OutputHeight()-4,$B3FEA8)
  StopDrawing()
  
  StartDrawing(CanvasOutput(1))
    Box(0,0,OutputWidth(),OutputHeight(),$0F)
    Box(2,2,OutputWidth()-4,OutputHeight()-4,$111FFF)
    DrawingMode(#PB_2DDrawing_Transparent )
    DrawText(15,12,"X",$FFFFFF)
  StopDrawing()
   
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          Select EventType()
            Case #PB_EventType_LeftButtonDown
              If run = 0
                run = 1
                ox = WindowMouseX(0)
                oy = WindowMouseY(0)
              EndIf
              
            Case #PB_EventType_LeftButtonUp
              run = 0
              
            Case #PB_EventType_MouseMove
              If GetGadgetAttribute(0,#PB_Canvas_Buttons ) =  #PB_Canvas_LeftButton
                ResizeWindow(0,DesktopMouseX()-ox,DesktopMouseY()-oy,#PB_Ignore,#PB_Ignore)
              EndIf
          EndSelect
          
        Case 1
          Select EventType()
            Case #PB_EventType_LeftButtonDown
              End
          EndSelect            
      EndSelect
  EndSelect
ForEver
EndIf
RASHAD, can this be done with an imagegadget instead? (No canvas involved)

I tried to add your code to my form and it didn't work predictably. I thought I did it right:)

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 11:43 am
by Fangbeast
Dude wrote:Based on someone else's code:

Code: Select all

If OpenWindow(1,150,150,300,100,"",#PB_Window_BorderLess)
  CreateImage(1,100,50,24,#Red)
  ImageGadget(1,10,10,100,50,ImageID(1))
  Repeat
    event=WaitWindowEvent()
    If GetAsyncKeyState_(#VK_LBUTTON)<>0
      GetCursorPos_(@cursor_pos.POINT)
      ScreenToClient_(WindowID(1),@cursor_pos)
      hChild=RealChildWindowFromPoint_(WindowID(1),PeekQ(cursor_pos))
      If hChild=GadgetID(1)
        ReleaseCapture_()
        SendMessage_(WindowID(1),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
      EndIf
    EndIf
This one works with my code, thanks.

Until event=#PB_Event_CloseWindow
EndIf
[/code]

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 12:27 pm
by RASHAD
As per your request

Code: Select all

LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")

If OpenWindow(0, 0, 0, 400, 400, "Moving Borderless Window", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
  SetWindowColor(0,$B9B9B9)
  ImageGadget(0,10,10,380,40,ImageID(0))
  DisableGadget(0,1)
  CreateImage(1,40,40,24,$0000FF)
  StartDrawing(ImageOutput(1))
    DrawingMode(#PB_2DDrawing_Transparent )
    DrawText(14,12,"X",$FFFFFF)
  StopDrawing()
  ImageGadget(1,10,350,40,40,ImageID(1))
Repeat
  Select WaitWindowEvent()
    Case #WM_LBUTTONDOWN
        If WindowMouseX(0) > 10 And WindowMouseX(0) < GadgetWidth(0) And WindowMouseY(0) > 10 And WindowMouseY(0) < (GadgetHeight(0)+10)
          SendMessage_(WindowID(0),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
        EndIf
        
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          End
      EndSelect
  EndSelect
ForEver
EndIf

Re: Move form by dragging imagegadget

Posted: Mon Nov 20, 2017 8:35 pm
by Fangbeast
Thank you master RASHAD. It was 35 degrees yesterday and my brains are currently mushy goo.