Many thanks to:
- DerRaphael for sTooltip - colored standard tooltip with timeout.
- Sean for BalloonTip
- Superfraggle for Add ToolTips to controls.
- Lexikos for Menu Icons v2 (stdlib)
- majkinetor for RemoteBuffer 2.0 (requiered to show ToolTip at TrayIcon coordinates)
Important Information wrote: | Please note some options like Close Button and Link will require Win2000++ (+version 6.0 of comctl32.dll)
Background and Text color do not work in Vista ToolTips, but you can disable it using Q option.
AutoHotKey Version 1.0.48++ is required due to "assume static mode"
If you use 1 ToolTip for several controls, the only difference between those can be the text.
- Rest, like Title, color and so on, will be valid globally
In Vista you can use Option Q (Q1) to disable Vista or XP Theme for the ToolTip
- this option will enable usual ToolTip and you can use colors
|
Options wrote: | A - Aim ConrolId or ClassNN (Button1, Edit2, ListBox1, SysListView321...)
- using this, ToolTip will be shown when you point mouse on a control
- D (delay) can be used to change how long ToolTip is shown
- W (wait) can wait for specified seconds before ToolTip will be shown
- Some controls like Static require a subroutine to have a ToolTip!!!
B and F - Specify here the color for ToolTip in 6-digit hexadecimal RGB code
- B = Background color, F = Foreground color (text color)
- this can be 0x00FF00 or 00FF00 or Blue, Lime, Black, White...
C - Close button for ToolTip/BalloonTip. See ToolTip actions how to use it
D - Delay. This option will determine how long ToolTip should be shown.30 sec. is maximum
- this option is also available when assigning the ToolTip to a control.
E - Edges for ToolTip, Use this to set margin of ToolTip window (space between text and border)
- Supply Etop.left.bottom.right in pixels, for example: E10.0.10.5
G - Execute one or more internal Labels of ToolTip function only.
For example:
- Track the position only, use ToolTip(1,"","","Xcaret Ycaret gTTM_TRACKPOSITION")
- When X+Y are empty (= display near mouse position) you can use TTM_UPDATE
- Update text only, use ToolTip(1,"text","","G1"). Note specify L1 if links are used.
- Update title only, use ToolTip(1,"","Title","G1")
- Hide ToolTip, use ToolTip(1,"","","gTTM_POP")
- To show ToolTip again use ToolTip(1,"","","gTTM_TRACKPOSITION.TTM_TRACKACTIVATE")
- Update background color + text color, specify . between gLabels to execute several:
- ToolTip(1,"","","BBlue FWhite gTTM_SETTIPBKCOLOR.TTM_SETTIPTEXTCOLOR")
- Following labels can be used: TTM_SETTITLEA + TTM_SETTITLEW (title+I), TTM_POPUP, TTM_POP
TTM_SETTIPBKCOLOR (B), TTM_SETTIPTEXTCOLOR (F), TTM_TRACKPOSITION (N+X+Y),
TTM_SETMAXTIPWIDTH (R), TTM_SETMARGIN (E), TT_SETTOOLINFO (text+A+P+N+X+Y+S+L)
TTM_SETWINDOWTHEME (Q)
H - Hide ToolTip after a link is clicked.See L option
I - Icon 1-3, e.g. I1. If this option is missing no Icon will be used (same as I0)
- 1 = Info, 2 = Warning, 3 = Error, > 3 is meant to be a hIcon (handle to an Icon)
Use Included MI_ExtractIcon and GetAssociatedIcon functions to get hIcon
J - Justify ToolTip to center of control
L - Links for ToolTips. Here an example for Links feature and another one for dynamic Text. Code (Expand): | OnMessage(0x4e,"WM_NOTIFY") ;Will make LinkClick and ToolTipClose possible WM_NOTIFY(wParam, lParam, msg, hWnd) { ToolTip("",lParam) } Sleep, 10 ToolTip(1,"<a>Click</a>`n<a>Onother one</a>`n" . "<a This link is different`nit uses different text>Different</a>`n" . "<a>ExitApp</a>","ClickMe","L1 P99 C1") Return ToolTip: link:=ErrorLevel SetTimer, MsgBox, -10 Return
ToolTipClose: ExitApp
MsgBox: If Link=ExitApp ExitApp MsgBox % Link Return |
Code (Expand): | OnMessage(0x4e,"WM_NOTIFY") Gui,Add,Button,,Time Gui,Add,Button,,Username Gui,Add,Button,,User is Admin? Gui,Add,Button,,IP addresses Loop 4 ToolTip("Button1"," ","","p1 aButton" . A_Index) gui,show Sleep, 3000 ToolTip("Button1","hallo","","G1") Return
WM_NOTIFY(wParam,lParam){ If (control:=ToolTip("",lparam)){ Tool:=ErrorLevel MouseGetPos,,,,ClassNN If (ClassNN="Button1"){ FormatTime,text,%A_Now%,HH:mm:ss Title:="Time" } else if (ClassNN="Button2"){ text:=A_UserName,title:="UserName" } else if (ClassNN="Button3"){ text:=(A_ISAdmin ? "Yes" : "No"),title:="User is Admin?" } else if (ClassNN="Button4"){ text:= "1: " A_IPAddress1 "`n2: " A_IPAddress2 "`n3: " A_IPAddress3 "`n4: " A_IPAddress4 title:="IP Addresses" } ToolTip(control,text,title,"G1 A" . ErrorLevel) } }
GuiClose: ExitApp |
M - Mouse click-trough. So a click will be forwarded to the window underneath ToolTip
N - Do NOT activate ToolTip (N1), To activate (show) call ToolTip(1,"","","gTTM_TRACKACTIVATE")
O - Oval ToolTip (BalloonTip). Specify O1 to use a BalloonTip instead of ToolTip.
P - Parent window hWnd or GUI number. This will assign a ToolTip to a window.
- Reqiered to assign ToolTip to controls and actions.
Q - Quench Style/Theme. Use this to disable Theme of ToolTip.
Using this option you can have for example colored ToolTips in Vista.
R - Restrict width. This will restrict the width of the ToolTip.
So if Text is to long it will be shown in several lines
S - Show at coordinates regardless of position. Specify S1 to use that feature
- normally it is fed automaticaly to show on screen
T - Transparency. This option will apply Transparency to a ToolTip.
- this option is not available to ToolTips assigned to a control.
V - Visible: even when the parent window is not active, a control-ToolTip will be shown
W - Wait time in seconds (max 30) before ToolTip pops up when pointing on one of controls.
X and Y - Coordinates where ToolTip should be displayed, e.g. X100 Y200
- leave empty to display ToolTip near mouse
- you can specify Xcaret Ycaret to display at caret coordinates
|
A few examples:
InfoToolTip
Code (Expand): | ;-- Build GUI gui -MinimizeBox Gui +LastFound GuiHwnd:=WinExist() gui Add,Button,w150 hwndButton1_hWnd gButton1,Test Button 1 Tip:="Button 1: Press me to change my tooltip" ToolTip(1,Tip,"","A" . Button1_hWnd . " P" . GuiHwnd)
gui Add,Button,y+0 w150 hwndButton2_hWnd gButton2,Test Button 2 Tip:="Button 2: Press me to turn off the tooltip for this button" ToolTip(2,Tip,"","A" . Button2_hWnd . " P" . GuiHwnd)
gui Add,Button,y+0 w150 hwndButton3_hWnd gButton3,Test Button 3 Tip= (ltrim A Multiline Test Tooltip 2nd line 3rd line 4th line. Press me to turn off all tooltips ) ToolTip(3,Tip,"","A" . Button3_hWnd . " P" . GuiHwnd)
gui Add,Checkbox,w150 hwndCheckbox_hWnd,Checkbox Control Tip:="Tooltip for the Checkbox control" ToolTip(4,Tip,"","A" . Checkbox_hWnd . " P" . GuiHwnd)
gui Add,Radio,w150 hwndRadio_hWnd,Radio Control Tip:="Tooltip for the Radio control" ToolTip(5,Tip,"","A" . Radio_hWnd . " P" . GuiHwnd)
gui Add,Edit,w150 hwndEdit_hWnd,Edit Control Tip:="Tooltip for the Edit control" ToolTip(6,Tip,"","A" . Edit_hWnd . " P" . GuiHwnd)
gui Add,Text,w150 hwndText_hWnd gNull,Text Control Tip= (ltrim join`s Tooltip for the Text control.`nNote that the Tooltip for a Text control does not show unless a g-label for the control is defined. ) ToolTip(7,Tip,"","A" . Text_hWnd . " P" . GuiHwnd)
gui Add,Picture,w150 h100 hwndPicture_hWnd gNull,Picture.bmp Tip= (ltrim join`s Tooltip for the Picture control.`nNote that the Tooltip for a Picture control does not show unless a g-label for the control is defined. ) ToolTip(9,Tip,"","A" . Picture_hWnd . " P" . GuiHwnd)
gui Add,DropDownList,w150 r3 hwndDropDownList_hWnd,DropDownList Control||2|3 Tip:="Tooltip for the DropDownList control" ToolTip(10,Tip,"","A" . DropDownList_hWnd . " P" . GuiHwnd)
gui Add,ComboBox,w150 r3 hwndComboBox_hWnd,ComboBox Control||2|3 ;-- A ComboBox is actually two controls: An Edit control and a Drop-down ; button. Note that handle returned for this control is for the ; drop-down button, not for the Edit control. Tip= (ltrim join`s Tooltip for the drop-down button piece of the ComboBox control.`nNote that this tip is different than the Edit piece of the control. ) ToolTip(11,Tip,"","A" . ComboBox_hWnd . " P" . GuiHwnd)
gui Add,ListBox,w150 r3 hwndListBox_hWnd,ListBox Control||2|3 Tip:="Tooltip for the ListBox control" ToolTip(12,Tip,"","A" . ListBox_hWnd . " P" . GuiHwnd)
gui Add,ListView,w150 h50 hwndListView_hWnd,ListView Control Tip= (ltrim join`s Tooltip for the ListView control.`nNote that this tip is different than the header piece of the control. ) ToolTip(13,Tip,"","A" . ListView_hWnd . " P" . GuiHwnd)
gui Add,DateTime,w150 hwndDateTime_hWnd ;,DateTime Control Tip:="Tooltip for the DateTime control" ToolTip(14,Tip,"","A" . DateTime_hWnd . " P" . GuiHwnd)
gui Add,UpDown,hwndUpDown_hWnd Range 1-100,5 Tip:="Tooltip for the UpDown control" ToolTip(20,Tip,"","A" . UpDown_hWnd . " P" . GuiHwnd)
gui Show,,Tooltip Test
;-- Note: The following information cannot be collected until after the window ; has been rendered
;-- Get hWnd to the Edit control piece of the ComboBox ControlGet EditComboBox_hWnd,hWnd,,Edit2,Tooltip Test Tip= (ltrim join`s Tooltip for the Edit piece of the ComboBox control.`nNote that this tip is different than the drop-down button piece of this control. ) ToolTip(11,Tip,"","A" . EditComboBox_hWnd . " P" . GuiHwnd)
;-- Get hWnd to the Edit control piece of the ComboBox ControlGet ListViewHeader_hWnd,hWnd,,SysHeader321,Tooltip Test Tip= (ltrim join`s Tooltip for the header of the ListView control.`nNote that this tip is different than the rest of the ListView control. ) ToolTip(13,Tip,"","A" . ListViewHeader_hWnd . " P" . GuiHwnd) return
Button1: ToolTip(1,"Button 1: New Text","","AButton1 P" . GuiHwnd) return
Button2: ToolTip(2) return
Button3: ToolTip() MsgBox 64,ToolTips Cleared,All Tooltips destroyed. %A_Space% return
Null: return
GUIClose: GUIescape: Gui,Destroy ExitApp Return |
Code (Expand): | OnMessage(0x4e,"WM_NOTIFY") ;Will make LinkClick and ToolTipClose possible OnMessage(0x404,"AHK_NotifyTrayIcon") ;Will pop up the ToolTip when you click on Tray Icon OnExit, ExitApp #NoEnv #SingleInstance Force
Restart: ToolTip(99,"Please click a link:`n`n" . "<a>My Favorite Websites</a>`n`n" . "<a>ToolTip Examples</a>`n`n" . "<a notepad.exe >Notepad</a>`n" . "<a explorer.exe >Explorer</a>`n" . "<a calc.exe >Calculator</a>`n" . "`n<a>Hide ToolTip</a>`n - To show this ToolTip again click onto Tray Icon" . "`n<a>ExitApp</a>`n" , "Welcome to ToolTip Control"
, "L1 H1 O1 C1 T220 BLime FBlue I" .
GetAssociatedIcon(A_ProgramFiles . "\Internet Explorer\iexplore.exe") . " P99 X" A_ScreenWidth . " Y" . A_ScreenHeight) Return
My_Favorite_Websites: ToolTip(98,"<a http://www.autohotkey.com >AutoHotkey</a> - <a http://de.autohotkey.com>DE</a>"
. " - <a
http://autohotkey.free.fr/docs/>FR</a> - <a
http://www.autohotkey.it/>IT</a>" . " - <a http://www.script-coding.info/AutoHotkeyTranslation.html>RU</a>" . " - <a http://lukewarm.s101.xrea.com/>JP</a>" . " - <a http://lukewarm.s101.xrea.com/>GR</a>" . " - <a http://www.autohotkey.com/docs/Tutorial-Portuguese.html>PT</a>" . " - <a http://cafe.naver.com/AutoHotKey>KR</a>" . " - <a http://forum.ahkbbs.cn/bbs.php>CN</a>"
. "`n<a http://www.google.com>Google</a>
- <a http://www.maps.google.com>Maps</a>`n" . "<a http://social.msdn.microsoft.com/Search/en-US/?Refinement=86&Query=>MSDN</a>`n" , "My Websites" , "L1 O1 C1 BSilver FBlue I" . GetAssociatedIcon(A_ProgramFiles . "\Internet Explorer\iexplore.exe") . " P99") Return
ToolTip_Examples: ToolTip(97, "<a>Message Box ToolTip</a>`n" . "<a>Change ToolTip</a>`n" . "<a>ToolTip Loop #1</a>`n" . "<a>ToolTip Loop #2</a>`n" . "<a>ToolTip Loop #3</a>`n`nClose to return to previous ToolTip" , "ToolTip Examples" , "L1 O1 C1 BYellow FBlue I" . GetAssociatedIcon(A_ProgramFiles . "\Internet Explorer\iexplore.exe") . " P99") Return
99ToolTip: If InStr(link:=ErrorLevel,"http://") Run iexplore.exe %link% else if IsLabel(link:=RegExReplace(link,"[^\w\.]","_")) SetTimer % link,-150 else if link { Run % link SetTimer, Restart, -100 } Return
98ToolTip: Run iexplore.exe %ErrorLevel% Return
97ToolTip: IsLabel(ErrorLevel:=RegExReplace(ErrorLevel,"[^\w]","_")) SetTimer % ErrorLevel,-100 Return
99ToolTipClose: MsgBox,262148,Closing
ToolTip..., ToolTip is about to close`nClick no to disable ToolTip`n
-You can show it again by clicking onto the Tray Icon`nDo you want to
exit script? IfMsgBox Yes ExitApp Return
97ToolTipClose: 98ToolTipClose: SetTimer, Restart, -100 Return
WM_NOTIFY(wParam, lParam, msg, hWnd){ ToolTip("",lParam,"") }
AHK_NotifyTrayIcon(wParam, lParam) { If (lparam = 0x201 or lparam = 0x202) SetTimer, Restart, -250 }
Hide_ToolTip: ToolTip(99) Return Execute: Run %ErrorLevel%.exe SetTimer, Restart, -100 Return
ExitApp: Loop, Parse, #_hIcons, | If A_LoopField DllCall("DestroyIcon",UInt,%A_LoopField%) ExitApp Return
ToolTip_Loop__1: ToolTip(100,"`nJust an example ToolTip following mouse movements" ,"This ToolTip will be destroyed in " . 4 . " Seconds","o1 I" . GetAssociatedIcon(A_AhkPath) . " B0000FF FFFFFFF") Start:=A_TickCount end= While, end < 10 {
ToolTip(100,"In this example text and Title are updated
continuously.`nTickCount:" . A_TickCount,"This ToolTip will be destroyed
in " . 11 - Round(end:=(A_TickCount-Start)/1000) . " Seconds","I"
. GetAssociatedIcon(A_AhkPath)) } ToolTip(100) Return ToolTip_Loop__2: end= ToolTip(100,"In
this example only position is tracked.","This ToolTip will be destroyed
in 10 Seconds","D10 I" . GetAssociatedIcon(A_AhkPath) . " B0000FF
FFFFFFF") ToolTip(100) Return
ToolTip_Loop__3: end= ToolTip(100,"`nHere only title is being changed" ,"This ToolTip will be destroyed in 10 Seconds","I" . GetAssociatedIcon(A_AhkPath) . " B0000FF FFFFFFF") Start:=A_TickCount While, end < 10 {
ToolTip(100,"","This ToolTip will be destroyed in " . 11 -
Round(end:=(A_TickCount-Start)/1000) . " Seconds","I" .
GetAssociatedIcon(A_AhkPath)) } ToolTip(100) Return
Message_Box_Tooltip: SetTimer,proceed, -200 MsgBox,4,Test,Hallo,`nPoint onto yes or no proceed: hwnd:=WinExist("Test ahk_class #32770") ToolTip(101,"Click
here to accept and proceed.","Here you see an example how to assign a
ToolTip to MsgBox controls","I1 B00FF00 AButton1 P" . hwnd) ToolTip(101,"Click here to refuse and proceed","","AButton2 P" . hwnd) IfWinExist Test ahk_class #32770 { WinWaitClose, Test ahk_class #32770 Return } ToolTip(101) Return
Change_ToolTip: Gui, Add,Button,,Point your mouse cursor here Gui,+LastFound ToolTip(1,"Test deleting and creating same Tooltip","TEST","Abutton1 P" . WinExist()) Gui,Show Sleep, 5000 ToolTip(1) Gui,Destroy Sleep, 1000 Gui, Add,Button,,Move your mouse cursor a little Gui,+LastFound ToolTip(1,"Test
deleting and creating same Tooltip`nTooltips were destroyed and
recreated.","New Tooltip with different text and title.","Abutton1 P" .
WinExist()) Gui,Show Sleep, 5000 Gui,Destroy ToolTip(1) Return |
|
|
|