File "Tooltip.inc"

Path: /ShuffleGUI/inc/Tooltip.inc
File size: 1.86 KB
MIME-type:
Charset: utf-8

'---------------------------------------------------------------
' Tooltip.inc for PBWin9
'---------------------------------------------------------------
' Simple Tool Tip Class - Add tool tips to controls
' In Dialog CallBack > %WM_InitDialog message block, call:
'    SetTooltip CB.HNDL, %IDC_CONTROL1, "bla bla"
'---------------------------------------------------------------
#INCLUDE ONCE "CommCtrl.inc"
'---------------------------------------------------------------
CLASS ToolTipC
    INSTANCE hDlg_ AS LONG
    INSTANCE hTip_ AS LONG
    INSTANCE tTip_ AS TOOLINFO
    INTERFACE ToolTipI : INHERIT IUNKNOWN
        METHOD Initialize(BYVAL hDlg AS LONG)
            hDlg_ = hDlg
            hTip_ = CreateWindowEx(BYVAL 0, "tooltips_class32", "", %TTS_ALWAYSTIP, 0, 0, _
                    0, 0, BYVAL hDlg, BYVAL 0&, GetModuleHandle(BYVAL %NULL), BYVAL 0&)
            IF hTip_ THEN
                DIALOG SEND hTip_, %TTM_SETMAXTIPWIDTH, 0, 300
                DIALOG SEND hTip_, %TTM_SETDELAYTIME, %TTDT_AUTOPOP, 5000
                tTip_.cbSize = LEN(tTip_)
                tTip_.uFlags = %TTF_SUBCLASS OR %TTF_IDISHWND
                tTip_.hWnd = hDlg_
            END IF
        END METHOD
        METHOD AddControl(BYVAL Id AS LONG, BYVAL tip AS STRING)
            IF hTip_ THEN
                tTip_.uId = GetDlgItem(hDlg_, ID)
                tTip_.lpszText = STRPTR(tip)
                SendMessage hTip_, %TTM_ADDTOOL, 0, BYVAL VARPTR(tTip_)
            END IF
        END METHOD
    END INTERFACE
END CLASS
'---------------------------------------------------------------
SUB SetTooltip(BYVAL hDlg AS LONG, BYVAL CtlId AS LONG, BYVAL str AS STRING)
    STATIC oTip AS ToolTipI
    IF ISNOTHING(oTip) THEN
        oTip = CLASS "ToolTipC"
        oTip.Initialize(hDlg)
    END IF
    oTip.AddControl(CtlId, str)
END SUB
'---------------------------------------------------------------