~~Title: Msg ~~ The **Msg** object represents a [[:scripting:script_dialogs|script dialog]] input event message. It’s returned by the **[[dialog|Dialog]].GetMsg** method which you call when running the message loop for a [[:scripting:script_dialogs:the_dialog_message_loop:detached_dialogs|detached dialog]]. $$ Property Name $$ Return Type $$ Description $$ (#)////  $$ //bool// $$ Returns **True** if the message is valid, or **False** if the dialog has been closed (which means you should exit your message loop). $$ buttons $$ //string// $$ Returns a string indicating which mouse button was pressed when the message was generated. Possible values are **left**, **right** and **middle**. $$ checked $$ //int// $$ If the event type is **checked**, this indicates the check state of the item. If checkboxes are used in automatic mode, this will be the **new** check state of the item. In manual mode, this will indicate the **existing** state and it's up to you to change the state if desired. Check states are: |**0**|unchecked| |**1**|checked| |**2**|indeterminate| |**3**|unchecked/disabled| |**4**|checked/disabled| |**5**|indeterminate/disabled| $$ control $$ //string// $$ Returns the name of the control involved in the event. You can get a **[[control|Control]]** object representing the control by passing this string to the **[[dialog|Dialog]].Control** method. * For a **timer** event this returns the name of the timer that was triggered. * For a **hotkey** event this returns the name of the hotkey. * For a **drop** event this returns the name of the control that the files were dropped on. * For a **tab** event this tells you which monitored tab the event occurred in (either the ID you assigned in the **[[dialog|Dialog]].WatchTab** method, or the numeric handle of the tab if you didn't assign an ID). * For a **dirchange** event this tells you which watcher detected a file or folder change (the ID you assigned via the **[[dialog|Dialog]].WatchDir** method). * If you have added an icon to the taskbar via the **[[dialog|Dialog]].NotifyIcon** method, **notifyicon** indicates an event associated with that icon. * For a **http** event this tells you the ID of the [[httprequest|HTTPRequest]] object. * For a **custom** message, this provides the name of the message. $$ cx $$ //int// $$ For **resize** events, this property returns the new width of the dialog. $$ cy $$ //int// $$ For **resize** events, this property returns the new height of the dialog. $$ data $$ //int// or// bool// $$ If the event type is **focus**, indicates the new focus state of the control - **True** if the control has gained the focus, or **False** if it's lost it. For a //combo box// or //list box// control: If the event type is **selchange** or **dblclk**, returns the data value associated with the selected item. For a two-state //check box// control or //radio button//: If the event type is **click**, returns a //bool// indicating the current check state. For a three-state //check box//: If the event type is **click**, returns an //int// representing the current state. For a date/time picker control, this value will be **true** if a valid date is selected, or **false** if the date is turned off (only applies if the "Show None" property is enabled). If the event type is **timer**, this value indicates the number of milliseconds that have elapsed since the last time this timer was triggered. If the event type is **tab**, and the **value** property is set to **filechange**, this indicates which file change events occurred in the monitored tab. **1** = add, **2** = delete, **4** = change. The values will be added together (so e.g. **6** indicates at least one item was changed and at least one was deleted). For a **http** event, this value contains the event status code. The **value** property provides the same information as a keyword. For a **color** event from a palette control, this will be `0` for an intermediate color change (e.g. the user has the palette open and is clicking around within it) and 1 for final changes (when the palette window closes). For a **custom** message sent from another script, this may be the optional numeric parameter that can be sent with the message. Scripts can also send a container object like a **[[map|Map]]** and this will be found in the **object** property instead. $$ dialog $$ //string// $$ Returns the name of the parent dialog. $$ event $$ //string// $$ Returns a string indicating the event that occurred. Currently defined events are: |**invalid**|The dialog has been closed| |**checked**|For a listview control with the //**Checkboxes**// property enabled, indicates that the checkbox of a list item has been clicked. | |**click**|The control was clicked (e.g. a button, check box, radio button, markup text or static control with //**Notify Clicks**// property enabled). | |**close**|The user clicked the dialog's close button. Only generated if the **[[dialog|Dialog]].want_close** property has been set to **True**. You'll need to close the dialog manually using the **[[dialog|Dialog]].EndDlg** method.| |**dblclk**|An item in the list was double-clicked (list box, combo box or list view) or the control was double-clicked (static control with //**Notify Clicks** //property enabled). | |**dirchange**|A file or folder that you established monitoring of via the **[[dialog|Dialog]].WatchChanges** method has changed. The **control** property tells you which watcher was triggered.| |**drag**|The user has initiated a drag and drop from a static or list view control. You can respond by calling the **[[dialog|Dialog]].Drag** method. The //**Drag Source**// property must be enabled on the control for this event to be generated. | |**drop**|Files were dropped onto your dialog. The dialog template must have its **//Accept Drops//** property set to **True** to enable drag & drop support. | |**editchange**|The contents of an edit field were modified. For a list view this event indicates that the label of a list item was edited. | |**focus**|The control gained or lost focus. | |**hotkey**|A key combination added as a hotkey with the **[[dialog|Dialog]].AddHotkey** method has been pressed. | |**http**|An event associated with a [[httprequest|HTTPRequest]] has occurred.| |**resize**|The dialog was resized by the user. Only generated if the **[[dialog|Dialog]].want_resize** property has been set to **True**. Don't mix manual and automatic resizing with the same control: If you move or resize a control in response to this event, the control should not have any of the **resize** flags set in the dialog editor. | |**rclick**|An item in the list was right-clicked (list box, list view) or the control was right-clicked (static control with //**Notify Clicks** //property enabled, or button control with the //**Right Button**// property enabled). | |**selchange**|The selection was changed (list box, combo box, list view or tab).| |**timer**|A periodic timer created with the **[[dialog|Dialog]].SetTimer** method has elapsed. | |**tab**|An event has occurred in a tab monitored using the **[[dialog|Dialog]].WatchTab** method. | |**color**|A new color has been chosen in a palette control.| |**clipboard**|Sent whenever the system clipboard contents change, once monitoring has been enabled with the **[[dialog|Dialog]].WatchClipboard** method.| |**custom**|A custom message sent from another script. The message name can be found in the **name** property.| |**datetime**|The date has changed in a date/time picker control.| $$ focus $$ //bool// $$ Returns **True** if the control had focus when the message was generated. $$ index $$ //int// $$ Returns the current selection index for a //combo box//, //list box// or //tab control//. $$ mousex $$ //int// $$ Returns the horizontal position of the mouse cursor when the message was generated. $$ mousey $$ //int// $$ Returns the vertical position of the mouse cursor when the message was generated. $$ name $$ //string// $$ An alias for the **control** property. $$ object $$ //variant// $$ For a **drop** event, this property returns a **[[vector|Vector]]** of **[[item|Item]]** objects, representing the files that were dropped onto your dialog. For a **custom** message sent from another script, this may be the optional container object (e.g. a **[[map|Map]]**) that can be sent with the message. Scripts can also send a numeric parameter and this will be found in the **data** property instead. For a date/time picker control, this property returns a **[[date|Date]]** object when a new valid date is chosen. $$ qualifiers $$ //string// $$ Returns a string indicating the qualifier keys (if any) that were held down when the message was generated. The string can contain any or all of the following: //shift,// //ctrl//, //alt//, //lwin//, //rwin// If no qualifiers were down, the string will be: //none// $$ result $$ //bool// $$ Returns **True** if the message is valid, or **False** if the dialog has been closed. $$ tab $$ //string// $$ For a dialog tab control, returns the name of the parent tab (if the control is on a dialog that's inside a tab control). If the event type is **tab**, this returns a **[[tab|Tab]]** object representing the monitored tab that the event occurred in. Calling this repeatedly may be inefficient. $$ value $$ //string// $$ For the **dblclk**, **editchange** and **selchange** events, returns the current contents of the edit field (or selected item label). For the **tab** event, indicates which event occurred in the monitored tab. Possible values are **select**, **navigate**, **filechange**, **activate**, **srcdst**, **view**, **flat**, and **close** (sent if the tab is closed while you are monitoring it). For the **drag** event, this indicates which button is being used to drag (**left** or **right**). For a **click** event from a markup text control, this indicates the ID of the clicked link. For a **http** event, this indicates the current http status code. For a **color** event from a palette control, this will be the selected color as either a hex or decimal string (depending on the control property). If the palette button's checkbox is disabled, this will be prefixed by a `!` character. For a date/time picker control, this returns the textual value of the selected date or time. The `object` property returns a **[[date|Date]]** object, which may be more useful.