User Tools

Site Tools


displaying_20a_20tooltip_20on_20demand_20_28lbb_29

This is an old revision of the document!


Displaying a tooltip on demand (LBB)

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:

    nomainwin
    TTM.ADDTOOL = 1028
    TTM.UPDATETIPTEXT = 1036
    TTM.TRACKACTIVATE = 1041
    TTS.ALWAYSTIP = 1
    TTS.NOPREFIX = 2
    TTS.BALLOON = 64
    button #w.b1, "Click me", [activate], UL, 120, 120
    open "Tooltip on demand" for window as #w
    #w "trapclose [quit]"
    hw = hwnd(#w)
    style = _WS_POPUP or TTS.NOPREFIX or TTS.ALWAYSTIP or TTS.BALLOON
    calldll #user32, "CreateWindowExA", _WS_EX_TOPMOST as long, _
        "tooltips_class32" as ptr, 0 as long, style as long, _
        _CW_USEDEFAULT as long, _CW_USEDEFAULT as long, _
        _CW_USEDEFAULT as long, _CW_USEDEFAULT as long, _
        hw as ulong, 0 as long, 0 as long, 0 as long, _
        hwndTT as long
    struct ti, cbSize as ulong, uFlags as ulong, _
        hwnd as ulong, uID as ulong, rectl as long, _
        rectt as long, rectr as long, rectb as long, _
        hinst as ulong, lpszText as ptr
    ti.cbSize.struct = LEN(ti.struct)
    ti.hwnd.struct = hw
    ti.lpszText.struct = ""
    calldll #user32, "SendMessageA", hwndTT as ulong, _
        TTM.ADDTOOL as long, 0 as long, ti as struct, _
        retval as long
    wait
[activate]
    ti.lpszText.struct = "Hello tooltip!"
    calldll #user32, "SendMessageA", hwndTT as ulong, _
        TTM.UPDATETIPTEXT as long, 0 as long, ti as struct, _
        retval as long
    calldll #user32, "SendMessageA", hwndTT as ulong, _
        TTM.TRACKACTIVATE as long, 1 as long, ti as struct, _
        retval as long
    timer 2000, [deactivate]
    wait
[deactivate]
    timer 0
    ti.lpszText.struct = ""
    calldll #user32, "SendMessageA", hwndTT as ulong, _
        TTM.UPDATETIPTEXT as long, 0 as long, ti as struct, _
        retval as long
    wait
[quit]
    close #w
    end

As shown, clicking the button will cause a balloon tooltip (available in Windows XP or later) to be displayed at the mouse position, and to remain displayed for two seconds. 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_20_28lbb_29.1522502356.txt.gz · Last modified: 2024/01/05 00:18 (external edit)