KfirAsulin Posted March 30, 2018 Share Posted March 30, 2018 Hi, I would like to create a simple rectangle gui (added a pic) so that it will maintain the same proportions (hight, width) including the controls, so it will look the same on every type of computer screen resolution. Thanks GUI.bmp Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 30, 2018 Moderators Share Posted March 30, 2018 KfirAsulin, Welcome to the AutoIt forums. You can do it like this: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $hGUI = GUICreate("Test", 500, 500, -1, -1, BitOR($WS_SIZEBOX, $WS_SYSMENU)) GUISetState() GUIRegisterMsg($WM_SIZING, "_WM_SIZING") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _WM_SIZING($hWnd, $iMsg, $wParam, $lParam) #forceref $iMsg, $wParam, $wParam If $hWnd = $hGUI Then Local $iNew_H, $iNew_W ; Get current size Local $sRect = DllStructCreate("Int[4]", $lParam) ; Read values Local $iLeft = DllStructGetData($sRect, 1, 1) Local $iTop = DllStructGetData($sRect, 1, 2) Local $iRight = DllStructGetData($sRect, 1, 3) Local $iBottom = DllStructGetData($sRect, 1, 4) ; Keep the same aspect ratio Switch $wParam ; drag side or corner Case 1, 2 ; $WMSZ_LEFT, $WMSZ_RIGHT ; Calculate new height <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $iNew_H = Int($iRight - $iLeft) ; Set new value DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 2) + $iNew_H, 4) Case Else ; Calculate new width <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $iNew_W = Int($iBottom - $iTop) ; Set new value DllStructSetData($sRect, 1, DllStructGetData($sRect, 1, 1) + $iNew_W, 3) EndSwitch EndIf EndFunc ;==>_WM_SIZING You will need to adjust the formulae in the <<<<<<<<<<<<<< lines to get the aspect ratio you require. Please ask if you have any questions. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
KfirAsulin Posted March 30, 2018 Author Share Posted March 30, 2018 Hi, thanks for the quick reply, I don't want the GUI to have the option to get resized by the user, instead, I would like the GUI to initially have width and height, and make everything smaller or bigger according to the screen resolution so it will look the same on all screens. (while maintaining the initial design proportion for all controls). *the problem is for screens that have low resolutions, so the GUI could be seen to high or too long. Hope I didn't confuse you... Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 30, 2018 Moderators Share Posted March 30, 2018 KfirAsulin, Use the @DesktopWidth & @DesktopHeight macros to find out the actual screen resolution and then do some basic maths to determine the required GUI size for that screen. Create your GUI at a standard initial size and use the AutoItSetOption ( "GUIResizeMode", $GUI_DOCKAUTO) directive so that the controls will resize correctly. Once the GUI is created, then resize the GUI to the required size using WinMove. M23 Earthshine 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
KfirAsulin Posted March 30, 2018 Author Share Posted March 30, 2018 thank you !! I will try it Link to comment Share on other sites More sharing options...
KfirAsulin Posted March 30, 2018 Author Share Posted March 30, 2018 Thank, looks like this is what i was looking for TANK YOU!! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now