User Tools

Site Tools


displaying_20a_20tooltip_20on_20demand

This is an old revision of the document!


Displaying a tooltip on demand

by Richard Russell, August 2012

As a rule, a tooltip is displayed when the mouse moves into the tool's rectangle and stays there for a specified minimum period of time; typically this is when the user 'hovers' the mouse over a control or other region of interest. However it is also possible to force a tooltip to display 'on demand', under the control of your program.

The code listing below demonstrates how to do that:

      INSTALL @lib$+"WINLIB5"
      SYS "SetWindowText", @hwnd%, "Click anywhere"
      REM!WC Windows Constants:
      CW_USEDEFAULT = &80000000
      TTM_ADDTOOL = &404
      TTM_TRACKACTIVATE = &411
      TTM_UPDATETIPTEXT = &40C
      TTS_ALWAYSTIP = 1
      TTS_BALLOON = 64
      TTS_NOPREFIX = 2
      WS_POPUP = &80000000
      hwndTT% = FN_createwindow("tooltips_class32", "", \
      \         CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, \
      \         0, WS_POPUP + TTS_NOPREFIX + TTS_ALWAYSTIP + TTS_BALLOON, 0)
      IF hwndTT% = 0 ERROR 100, "Couldn't create tooltip"
      DIM ToolInfo{cbSize%, uFlags%, hwnd%, uID%, rc{l%,t%,r%,b%}, \
      \      hinst%, lpszText%}
      ToolInfo.cbSize% = DIM(ToolInfo{})
      ToolInfo.hwnd% = @hwnd%
      ToolTipText$ = "" + CHR$0
      ToolInfo.lpszText% = !^ToolTipText$
      SYS "SendMessage", hwndTT%, TTM_ADDTOOL, 0, ToolInfo{}
      PROC_setfocus(@hwnd%)
      REPEAT
        WAIT 1
        MOUSE X%, Y%, B%
        IF B% PROCactivate
      UNTIL FALSE
      END
      DEF PROCactivate
      ToolTipText$ = "Hello tooltip!" + CHR$0
      ToolInfo.lpszText% = !^ToolTipText$
      SYS "SendMessage", hwndTT%, TTM_UPDATETIPTEXT, 0, ToolInfo{}
      SYS "SendMessage", hwndTT%, TTM_TRACKACTIVATE, 1, ToolInfo{}
      WAIT 100
      ToolTipText$ = "" + CHR$0
      ToolInfo.lpszText% = !^ToolTipText$
      SYS "SendMessage", hwndTT%, TTM_UPDATETIPTEXT, 0, ToolInfo{}
      ENDPROC

As shown, clicking anywhere will cause a balloon tooltip (available in Windows XP or later) to be displayed at the mouse position, and to remain displayed for one second. If the TTS_BALLOON style is omitted a regular tooltip will be displayed.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
displaying_20a_20tooltip_20on_20demand.1522502356.txt.gz · Last modified: 2024/01/05 00:18 (external edit)