User Tools

Site Tools


displaying_20a_20tooltip_20on_20demand

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.txt · Last modified: 2024/01/05 00:22 by 127.0.0.1