Chorda Posted October 18, 2008 Share Posted October 18, 2008 (edited) Hi, There are about 9 posts about window resizing here but none that actually answers my question. I have a simple window with basically just a few labels in it. Those labels are pulled from an .ini file, and so their width will change depending on the values inside the .ini file. I would like to have the window resize itself upon starting to just encompass those labels. I couldn't find a common style value $WS_xxxxx or the GUICtrlSetResizing (which apparently just locks things), or WinMove(). Well, of course, I could just keep track of all the widths and heights and add them up or something. But I would imagine that there must be a command to resize. Any idea? Thanks Edited October 18, 2008 by Chorda Link to comment Share on other sites More sharing options...
rasim Posted October 18, 2008 Share Posted October 18, 2008 ChordaControlGetPos() GUICtrlSetPos()? Link to comment Share on other sites More sharing options...
Chorda Posted October 18, 2008 Author Share Posted October 18, 2008 I am retrieving the sizes of the Labels in a loop and I am keeping the biggest one: CODE$pos = ControlGetPos($MenuWindow, "", $AppLabel) If $pos[2] > $MaxLabelWidth Then $MaxLabelWidth = $pos[2] And then at the end, I resize the window with the biggest width: CODEWinMove($MenuWindow, "", Default, Default, $MaxLabelWidth) I like WinMove() because I can use the Default keyword instead of values for the positions. So in terms of resizing while keeping the window in the center of the screen, that works, but, I am also using the following code to resize the Labels based on the font (thanks ResNullius for the code): CODEFunc _Control_SetWidth2Text($hWin, $sWinText, $hCtrl, $iPad = 0) ;author: ResNullius, based on PaulIA/GaryFrost (listview udf) Local $hWnd, $hDC, $hFont, $iMax, $tSize, $sText, $aCtrlPos, $ctrlX, $ctrlY, $ctrlW, $ctrlH If Not IsHWnd($hCtrl) Then $hWnd = ControlGetHandle($hWin, $sWinText, $hCtrl) Else $hWnd = $hCtrl EndIf If IsHWnd($hWnd) Then $hFont = _SendMessage($hWnd, $WM_GETFONT) $hDC = _WinAPI_GetDC($hWnd) _WinAPI_SelectObject($hDC, $hFont) $sText = ControlGetText($hWin, $sWinText, $hCtrl) $tSize = _WinAPI_GetTextExtentPoint32($hDC, $sText & " ") If DllStructGetData($tSize, "X") > $iMax Then $iMax = DllStructGetData($tSize, "X") + $iPad $aCtrlPos = ControlGetPos($hWin, $sWinText, $hCtrl) $ctrlX = $aCtrlPos[0] $ctrlY = $aCtrlPos[1] $ctrlW = $aCtrlPos[2] $ctrlH = $aCtrlPos[3] ControlMove($hWin, $sWinText, $hCtrl, $ctrlX, $ctrlY, $iMax, $ctrlH) EndIf _WinAPI_SelectObject($hDC, $hFont) _WinAPI_ReleaseDC($hWnd, $hDC) EndIf EndFunc;==>_Control_SetWidth2Text But the problem is that as soon as I include the WinMove() function, it apparently resizes my Labels back to their original smaller sizes, and my texts get trunckated. I tried to Lock the Labels, but they still revert to a smaller size. Link to comment Share on other sites More sharing options...
ProgAndy Posted October 18, 2008 Share Posted October 18, 2008 Well, if you use ControlMove, AutoIt doesn't save the new size and pos. Use GUICtrlSetPos instead, *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
Jeyka Posted August 30, 2009 Share Posted August 30, 2009 can anyone help me? ı need resize windows but ı dont understand how can ı do. #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Resize", 342, 152, 385, 313) $Input1 = GUICtrlCreateInput("window name", 32, 56, 121, 21) $Combo1 = GUICtrlCreateCombo("100", 176, 56, 145, 25) GUICtrlSetData(-1, "100|90|80|70|60|50|40|30|20|10") $Button1 = GUICtrlCreateButton("Resize", 176, 96, 147, 25, $WS_GROUP) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd I need help with "if pressed to button , read combo and resize Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 30, 2009 Moderators Share Posted August 30, 2009 Jeyka ,You need to capture the button press via GUIGetMsg(). Take a look at this:#include <GUIConstantsEx.au3> $Form1 = GUICreate("Resize", 340, 150) $Input1 = GUICtrlCreateInput("window name", 30, 60, 120, 20) $Combo1 = GUICtrlCreateCombo("", 175, 60, 145, 25) GUICtrlSetData(-1, "400|450|500|550|600|650") $Button1 = GUICtrlCreateButton("Resize", 175, 100, 150, 25) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $Button1 $New_Width = GUICtrlRead($Combo1) WinMove($Form1, "", Default, Default, $New_Width, 150) EndSwitch WEndAsk if anything is unclear.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...
wolf9228 Posted August 31, 2009 Share Posted August 31, 2009 can anyone help me? ı need resize windows but ı dont understand how can ı do. #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Resize", 342, 152, 385, 313) $Input1 = GUICtrlCreateInput("window name", 32, 56, 121, 21) $Combo1 = GUICtrlCreateCombo("100", 176, 56, 145, 25) GUICtrlSetData(-1, "100|90|80|70|60|50|40|30|20|10") $Button1 = GUICtrlCreateButton("Resize", 176, 96, 147, 25, $WS_GROUP) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd I need help with "if pressed to button , read combo and resize expandcollapse popup#include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Include <WinAPI.au3> Dim $hWnd[3] $hGUI = GUICreate("Resize", 342, 152, 385, 313) $hWnd[0] = GUICtrlCreateInput("window name", 32, 56, 121, 21) $hWnd[1] = GUICtrlCreateCombo("100", 176, 56, 145, 25) GUICtrlSetData(-1, "100|90|80|70|60|50|40|30|20|10") $hWnd[2] = GUICtrlCreateButton("Resize", 176, 96, 147, 25, $WS_GROUP) GUISetState(@SW_SHOW) WindowsResize($hWnd,$hGUI,70) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func WindowsResize($hWnd_Array,$hGUI,$percent) For $i = 0 To UBound($hWnd_Array) - 1 Step 1 $pos = ControlGetPos($hGUI, "", $hWnd_Array[$i]) $L = $pos[0] $W = Int(($pos[1] / 100) * $percent) $L += Int(($pos[1] - $W ) / 2) $T = $pos[1] $H = Int(($pos[3] / 100) * $percent) $T += Int(($pos[3] - $H ) / 2) GUICtrlSetPos($hWnd_Array[$i], $L, $T , $W , $H) Next $pos = WinGetPos($hGUI) $L = $pos[0] $W = Int(($pos[1] / 100) * $percent) $L += Int(($pos[1] - $W ) / 2) $T = $pos[1] $H = Int(($pos[3] / 100) * $percent) $T += Int(($pos[3] - $H ) / 2) _WinAPI_SetWindowPos($hGUI, 0, $L, $T , $W , $H, 0) EndFunc صرح السماء كان هنا 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