Sign in to follow this  
Followers 0
Floppy

Move and Resize an object

8 posts in this topic

Hi,

how can i create a movable and resizable object? for example, a resizable label?

thanks in advance

Share this post


Link to post
Share on other sites



@FSoft,

Create the control as normal and then use GUICtrlSetPos to place it where you wish at whatever size you want.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

No, you don't understood me.

The object can be resizable also in compiled script.

For example, I can move/resize the object with the mouse without edit the script.

Edited by FSoft

Share this post


Link to post
Share on other sites

@FSoft

Example:

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MenuConstants.au3>

$hGUI = GUICreate("Test", 300, 200)

$cLabel = GUICtrlCreateLabel("Move me", 100, 50, 60, 20)
GUICtrlSetBkColor(-1, 0x00FF00)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYDOWN
            _ControlMove($cLabel)
    EndSwitch
WEnd

Func _ControlMove($cID)
    Local $aCurPos = GUIGetCursorInfo()
    If @error Then Return False
    
    If $aCurPos[4] = $cID Then SendMessage(GUICtrlGetHandle($cLabel), $WM_SYSCOMMAND, BitOR($SC_MOVE, $HTCAPTION), 0)
EndFunc   ;==>_ControlMove

Func SendMessage($hWnd, $Msg, $wParam, $lParam)
    DllCall("User32.dll", "int", "SendMessage", _
                                 "hWnd", $hWnd, _
                                 "int", $Msg, _
                                 "int", $wParam, _
                                 "int", $lParam)
EndFunc   ;==>SendMessage

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Better way: Moves all controls in a window.

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MenuConstants.au3>

$hGUI = GUICreate("Test", 300, 200)

GUICtrlCreateLabel("Move me", 100, 50, 60, 20)
GUICtrlSetBkColor(-1, 0x00FF00)

GUICtrlCreateButton("hi",40,100,80,23)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYDOWN
            $cInfo = GUIGetCursorInfo($hGUI)
            $iControl = $cInfo[4]
            
            
            If $iControl Then
                
                $aPos = ControlGetPos($hGUI,"",$iControl)
                
                $iSubtractX = $cInfo[0]-$aPos[0]
                $iSubtractY = $cInfo[1]-$aPos[1]
                
                Do
                    
                    $cInfo = GUIGetCursorInfo($hGUI)
                    
                    ControlMove($hGUI, "", $iControl, $cInfo[0]-$iSubtractX, $cInfo[1]-$iSubtractY)
                    
                Until Not $cInfo[2]
                
            EndIf
            
    EndSwitch
WEnd
Edited by Kip

Share this post


Link to post
Share on other sites

it works...thank you very much

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0