Positioning and Sizing of Controls
If some dimensions and/or coordinates are omitted from Options, the control will be positioned relative to the previous control and/or sized automatically according to its nature and contents.
The following options are supported:
R: Rows of text (can contain a floating point number such as R2.5).
R is often preferable to specifying H (Height). If both the R and H options are present, R will take precedence.
For a GroupBox, this setting is the number of controls for which to reserve space inside the box.
Make a beautiful graphical user interface in 15 lines or less
For DropDownLists, ComboBoxes, and ListBoxes, it is the number of items visible at one time inside the list portion of the control (but it is often desirable to omit both the R and H options for DropDownList and ComboBox, as the popup list will automatically take advantage of the available height of the user's desktop).
For other control types, R is the number of rows of text that can visibly fit inside the control.
W: Width, in pixels. If omitted, the width is calculated automatically for some control types based on their contents. The other controls types have the following default widths:
Tab controls: 30 times the current font size, plus 3 times the X-margin.
Vertical Progress Bars: Two times the current font size.
Horizontal Progress Bars, horizontal Sliders, DropDownLists, ComboBoxes, ListBoxes, GroupBoxes, Edits, and Hotkeys: 15 times the current font size (except GroupBoxes, which multiply by 18 to provide room inside for margins).
H: Height, in pixels.
If both the H and R options are absent, DropDownLists, ComboBoxes, ListBoxes, and empty multi-line Edit controls default to 3 rows; GroupBoxes default to 2 rows; vertical Sliders and Progress Bars default to 5 rows; horizontal Sliders default to 30 pixels (except if a thickness has been specified); horizontal Progress Bars default to 2 times the current font size; Hotkey controls default to 1 row; and Tab controls default to 10 rows.
For the other control types, the height is calculated automatically based on their contents.
Autohotkey GUI Tutorial
Note that for DropDownLists and ComboBoxes, H is the combined height of the control's always-visible portion and its list portion (but even if the height is set too low, at least one item will always be visible in the list).
Also, for all types of controls, specifying the number of rows via the R option is usually preferable to using H because it prevents a control from showing partial/incomplete rows of text.
wp+n, hp+n, wp-n, hp-n (where n is any number) can be used to set the width and/or height of a control equal to the previously added control's width or height, with an optional plus or minus adjustment.
For example, would set a control's width to that of the previous control, and would set it equal to 50 less than that of the previous control.
For example, specifying would position the control in the upper left corner of the window's client area, which is the area beneath the title bar and menu bar (if any). If X is omitted but not Y, the control will be positioned to the right of all previously added controls, which can be thought of as starting a new "column".
If Y is omitted but not X, the control will be positioned beneath all previously added controls, which can be thought of as starting a new "row".
Omitting either X, Y or both is useful to make a GUI layout automatically adjust to any future changes you might make to the size of controls or font.
Best way to set options variables for gui ahk
By contrast, specifying an absolute position for every control might require you to manually shift the position of all controls that lie beneath and/or to the right of a control that is being enlarged or reduced.
If both X and Y are omitted, the control will be positioned beneath the previous control using a standard padding distance.
For X and Y, an optional plus sign can be included to position a control relative to the right or bottom edge (respectively) of the control that was previously added.
For example, specifying would position the control 10 pixels beneath the bottom of the previous control rather than using the standard padding distance. Similarly, specifying would position the control 10 pixels to the right of the previous control's right edge.
Since negative numbers such as are reserved for absolute positioning, to use a negative offset, include a plus sign in front of it. For example: .
For X+ and Y+, the letter M can be used as a substitute for the window's current margin.
For example, x+m uses the right edge of the previous control plus the standard padding distance. xp y+m positions a control below the previous control, whereas specifying an X coordinate on its own would normally imply yp by default.
xp+n, yp+n, xp-n, yp-n (where n is any number) can be used to position controls relative to the previous control's upper left corner, which is often useful for enclosing controls in a GroupBox.
xm and ym can be used to position a control at the leftmost and topmost margins of the window, respectively (these two may also be followed by a plus/minus sign and a number).
By specifying ym without any x-position at all, the control will be positioned at the top margin but to the right of all previously added controls, which can be thought of as starting a new "column".
The converse is also true.
xs and ys: these are similar to xm and ym except that they refer to coordinates that were saved by having previously added a control with the word Section in its options (the first control of the window always starts a new section, even if that word isn't specified in its options).
By specifying ys without any x-position at all, the control will be positioned at the previously saved y-position, but to the right of all controls that have been added since the most recent use of the word Section; this can be thought of as starting a new column within the section.
For example:Gui := GuiCreate() Gui.Add("Edit", "w600") ; Add a fairly wide edit control at the top of the window. Gui.Add("Text", "section", "First Name:") ; Save this control's position and start a new section. Gui.Add("Text",, "Last Name:") Gui.Add("Edit", "ys") ; Start a new column within this section. Gui.Add("Edit") Gui.Show
The converse of the above (specifying xs but omitting the y-position) is also true.
xs and ys may optionally be followed by a plus/minus sign and a number.
Also, it is possible to specify both the word Section and xs/ys in a control's options; this uses the previous section for itself but establishes a new section for subsequent controls.
Storing and Responding to User Input
V: Sets the control's Name.
Specify the name immediately after the letter V, which is not included in the name. For example, specifying would name the control "MyEdit".
Events: Event handlers (such as a function which is called automatically when the user clicks or changes a control) cannot be set within the control's Options.
Instead, OnEvent can be used to register a callback function or method for each event of interest.
Controls: Common Styles and Other Options
Note: In the absence of a preceding sign, a plus sign is assumed; for example, is the same as .
By contrast, would remove the word-wrapping property.
AltSubmit: Uses alternate submit method. For DropDownList, ComboBox, ListBox and Tab, this causes Gui.Submit to store the position of the selected item rather than its text.
If no item is selected, a ComboBox will still store the text of its edit field.
C: Color of text (has no effect on buttons). Specify the letter C followed immediately by a color name (see color chart) or RGB value (the 0x prefix is optional).
Examples: , , , .
Disabled: Makes an input-capable control appear in a disabled state, which prevents the user from focusing or modifying its contents.
Use GuiCtrl.Enabled to enable it later. Note: To make an Edit control read-only, specify the string instead. Also, the word Disabled may optionally be followed immediately by a 0 or 1 to indicate the starting state (0 for enabled and 1 for disabled). In other words, and are the same.
Hidden: The control is initially invisible. Use GuiCtrl.Visible to show it later. The word Hidden may optionally be followed immediately by a 0 or 1 to indicate the starting state (0 for visible and 1 for hidden).
Setting variables with a GUI
In other words, and are the same.
Left: Left-justifies the control's text within its available width. This option affects the following controls: Text, Edit, Button, Checkbox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime.
Right: Right-justifies the control's text within its available width.
For checkboxes and radio buttons, this also puts the box itself on the right side of the control rather than the left. This option affects the following controls: Text, Edit, Button, Checkbox, Radio, UpDown, Slider, Tab, Tab2, GroupBox, DateTime, Link.
Center: Centers the control's text within its available width.
This option affects the following controls: Text, Edit, Button, Checkbox, Radio, Slider, GroupBox.
Section: Starts a new section and saves this control's position for later use with the xs and ys positioning options described above.
Tabstop: Use (i.e. minus Tabstop) to have an input-capable control skipped over when the user presses the key to navigate.
Wrap: Enables word-wrapping of the control's contents within its available width.
Since nearly all control types start off with word-wrapping enabled, use to disable word-wrapping.
VScroll: Provides a vertical scroll bar if appropriate for this type of control.
HScroll: Provides a horizontal scroll bar if appropriate for this type of control.
The rest of this paragraph applies to ListBox only. The horizontal scrolling width defaults to 3 times the width of the ListBox.
To specify a different scrolling width, include a number immediately after the word HScroll. For example, would allow 500 pixels of scrolling inside the ListBox. However, if the specified scrolling width is smaller than the width of the ListBox, no scroll bar will be shown (though the mere presence of HScroll makes it possible for the horizontal scroll bar to be added later via , which is otherwise impossible).
Controls: Uncommon Styles and Options
BackgroundTrans: Uses a transparent background, which allows any control that lies behind a Text, Picture, or GroupBox control to show through.
For example, a transparent Text control displayed on top of a Picture control would make the text appear to be part of the picture. Use to remove this option later.
See Picture control's AltSubmit section for more information about transparent images.
Known limitation: BackgroundTrans might not work properly for controls inside a Tab control that contains a ListView. If a control type does not support this option, an error is thrown.
BackgroundColor: Changes the background color of the control.
Replace Color with a color name (see color chart) or RGB value (the 0x prefix is optional). Examples: , . If this option is not present, a Text, Picture, GroupBox, CheckBox, Radio, Slider, Tab or Link control initially defaults to the background color set by Gui.BackColor (or if none or other control type, the system's default background color).
Specifying or applies the system's default background color. For example, a control can be restored to the default color via . Using without specifying a color reverts . If a control type does not support this option, an error is thrown.
Border: Provides a thin-line border around the control. Most controls do not need this because they already have a type-specific border. When adding a border to an existing control, it might be necessary to increase the control's width and height by 1 pixel.
Theme: This option can be used to override the window's current theme setting for the newly created control.
It has no effect when used on an existing control; however, this may change in a future version. See GUI's +/-Theme option for details.
(Unnamed Style): Specify a plus or minus sign followed immediately by a decimal or hexadecimal style number.
You may also like...
If the sign is omitted, a plus sign is assumed.
(Unnamed ExStyle): Specify a plus or minus sign followed immediately by the letter E and a decimal or hexadecimal extended style number. If the sign is omitted, a plus sign is assumed. For example, would add the WS_EX_CLIENTEDGE style, which provides a border with a sunken edge that might be appropriate for pictures and other controls.
Although the other extended styles are not documented here (since they are rarely used), they can be discovered by searching for WS_EX_CLIENTEDGE at www.microsoft.com.