Code archives/Miscellaneous/Gadget Tooltips (Win32)
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Tooltips & Balloontips for MaxGUI gagets. Win32 Only. This is the most basic tooltips you can get, if you want more options i suggest reading up on it on msdn. feks here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp Setting a tooltip SetGadgetTooltip( gadget, "this is the tip") Removing a tooltip SetGadgetTooltip( gadget, Null) Usage example: SuperStrict Import "Tooltips.bmx" Global window:TGadget = CreateWindow( "Main", 64,64, 256,256, Desktop(), WINDOW_TITLEBAR | WINDOW_CLIENTCOORDS) Global button1:TGadget = CreateButton( "Hover me!", 64,64, 75,25, window) Global button2:TGadget = CreateButton( "Hover me too!", 64 + 80,64, 75,25, window) SetGadgetTooltip( button1, "This is standard tool-tip") SetGadgetBalloontip( button2, "This is a balloon-tip") While WaitEvent() Select CurrentEvent.ID Case EVENT_GADGETACTION ' remove tooltip from clicked button Select CurrentEvent.Source Case button1 SetGadgetTooltip( button1, Null) Case button2 SetGadgetBalloontip( button2, Null) EndSelect Case EVENT_WINDOWCLOSE If CurrentEvent.Source = window Then Exit EndSelect Wend End | |||||
SuperStrict ?Win32 Import BRL.MaxGUI Import BRL.Win32MaxGUI Import PUB.Win32 ? Const TTS_ALWAYSTIP:Int = 1 Const TTS_NOPREFIX:Int = 2 Const TTS_NOANIMATE:Int = $10 Const TTS_NOFADE:Int = $20 Const TTS_BALLOON:Int = $40 Const TTS_CLOSE:Int = $80 ?Win32 Const TTM_ACTIVATE:Int = WM_USER+1 Const TTM_SETDELAYTIME:Int = WM_USER+3 Const TTM_ADDTOOLA:Int = WM_USER+4 Const TTM_ADDTOOLW:Int = WM_USER+50 Const TTM_DELTOOLA:Int = WM_USER+5 Const TTM_DELTOOLW:Int = WM_USER+51 Const TTM_NEWTOOLRECTA:Int = WM_USER+6 Const TTM_NEWTOOLRECTW:Int = WM_USER+52 Const TTM_RELAYEVENT:Int = WM_USER+7 Const TTM_GETTOOLINFOA:Int = WM_USER+8 Const TTM_GETTOOLINFOW:Int = WM_USER+53 Const TTM_SETTOOLINFOA:Int = WM_USER+9 Const TTM_SETTOOLINFOW:Int = WM_USER+54 Const TTM_HITTESTA:Int = WM_USER+10 Const TTM_HITTESTW:Int = WM_USER+55 Const TTM_GETTEXTA:Int = WM_USER+11 Const TTM_GETTEXTW:Int = WM_USER+56 Const TTM_UPDATETIPTEXTA:Int = WM_USER+12 Const TTM_UPDATETIPTEXTW:Int = WM_USER+57 Const TTM_GETTOOLCOUNT:Int = WM_USER+13 Const TTM_ENUMTOOLSA:Int = WM_USER+14 Const TTM_ENUMTOOLSW:Int = WM_USER+58 Const TTM_GETCURRENTTOOLA:Int = WM_USER+15 Const TTM_GETCURRENTTOOLW:Int = WM_USER+59 Const TTM_WINDOWFROMPOINT:Int = WM_USER+16 Const TTM_TRACKACTIVATE:Int = WM_USER+17 Const TTM_TRACKPOSITION:Int = WM_USER+18 Const TTM_SETTIPBKCOLOR:Int = WM_USER+19 Const TTM_SETTIPTEXTCOLOR:Int = WM_USER+20 Const TTM_GETDELAYTIME:Int = WM_USER+21 Const TTM_GETTIPBKCOLOR:Int = WM_USER+22 Const TTM_GETTIPTEXTCOLOR:Int = WM_USER+23 Const TTM_SETMAXTIPWIDTH:Int = WM_USER+24 Const TTM_GETMAXTIPWIDTH:Int = WM_USER+25 Const TTM_SETMARGIN:Int = WM_USER+26 Const TTM_GETMARGIN:Int = WM_USER+27 Const TTM_POP:Int = WM_USER+28 Const TTM_UPDATE:Int = WM_USER+29 Const TTM_GETBUBBLESIZE:Int = WM_USER+30 Const TTM_ADJUSTRECT:Int = WM_USER+31 Const TTM_SETTITLEA:Int = WM_USER+32 Const TTM_SETTITLEW:Int = WM_USER+33 Const TTM_ADDTOOL:Int = TTM_ADDTOOLA Const TTM_DELTOOL:Int = TTM_DELTOOLA Const TTM_NEWTOOLRECT:Int = TTM_NEWTOOLRECTA Const TTM_GETTOOLINFO:Int = TTM_GETTOOLINFOA Const TTM_SETTOOLINFO:Int = TTM_SETTOOLINFOA Const TTM_HITTEST:Int = TTM_HITTESTA Const TTM_GETTEXT:Int = TTM_GETTEXTA Const TTM_UPDATETIPTEXT:Int = TTM_UPDATETIPTEXTA Const TTM_ENUMTOOLS:Int = TTM_ENUMTOOLSA Const TTM_GETCURRENTTOOL:Int = TTM_GETCURRENTTOOLA Private Type TToolInfoA Field cbSize:Int Field uFlags:Int Field hwnd:Int Field uID:Int Field rect:Int,_rect2:Int,_rect3:Int,_rect4:Int Field hInst:Int Field lpszText:Byte Ptr Field lParam:Int EndType Const TOOLTIPS_CLASS:String = "tooltips_class32" Global TooltipHandle:Int Global BalloontipHandle:Int Extern "C" Function strncpy:Int( dest:Byte Ptr, src$z, length:Int) EndExtern Public ' automaticly initialize tooltips InitTooltips() ? Function InitTooltips() ?Win32 ' regular tooltips If TooltipHandle = 0 Then TooltipHandle = CreateWindowExA( WS_EX_TOPMOST, TOOLTIPS_CLASS, Null,.. WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,.. CW_USEDEFAULT, CW_USEDEFAULT,.. CW_USEDEFAULT, CW_USEDEFAULT,.. 0, Null, 0, Null) SetWindowPos( TooltipHandle, HWND_TOPMOST,0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE) SendMessageA( TooltipHandle, TTM_ACTIVATE, True, 0) EndIf ' balloon tips If BalloontipHandle = 0 Then BalloontipHandle = CreateWindowExA( WS_EX_TOPMOST, TOOLTIPS_CLASS, Null,.. WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP | TTS_BALLOON,.. CW_USEDEFAULT, CW_USEDEFAULT,.. CW_USEDEFAULT, CW_USEDEFAULT,.. 0, Null, 0, Null) SetWindowPos( BalloontipHandle, HWND_TOPMOST,0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE) SendMessageA( BalloontipHandle, TTM_ACTIVATE, True, 0) EndIf ? EndFunction Function SetGadgetTooltip( gadget:TGadget, text:String, flags:Int = 0, id:Int = 0) If Not gadget Then Return ?Win32 Local ti:TToolInfoA = New TToolInfoA ti.cbSize = SizeOf(TToolInfoA) ti.uFlags = TTF_SUBCLASS | flags ti.hwnd = gadget.Query( QUERY_HWND) ti.uID = id ti.rect = 0 ti._rect2 = 0 ti._rect3 = gadget.Width ti._rect4 = gadget.Height If text.Length > 0 Then Local buff:Byte[text.Length+1] strncpy( buff, text, buff.Length) ti.lpszText = buff SendMessageA( TooltipHandle, TTM_ADDTOOL, 0, Int Byte Ptr ti) Else SendMessageA( TooltipHandle, TTM_DELTOOL, 0, Int Byte Ptr ti) EndIf ? EndFunction Function SetGadgetBalloontip( gadget:TGadget, text:String, flags:Int = TTF_CENTERTIP, id:Int = 0) If Not gadget Then Return ?Win32 Local ti:TToolInfoA = New TToolInfoA ti.cbSize = SizeOf(TToolInfoA) ti.uFlags = TTF_SUBCLASS | flags ti.hwnd = gadget.Query( QUERY_HWND) ti.uID = id ti.rect = 0 ti._rect2 = 0 ti._rect3 = gadget.Width ti._rect4 = gadget.Height If text.Length > 0 Then Local buff:Byte[text.Length+1] strncpy( buff, text, buff.Length) ti.lpszText = buff SendMessageA( BalloontipHandle, TTM_ADDTOOL, 0, Int Byte Ptr ti) Else SendMessageA( BalloontipHandle, TTM_DELTOOL, 0, Int Byte Ptr ti) EndIf ? EndFunction |
Comments
| ||
Updated with required module imports, and added some more ?Win32 defines |
| ||
Very good, but how can I write more than one line in a tooltip ? |
| ||
you will send the max string width to the tooltip using SendMessageA and TTM_SETMAXTIPWIDTH (the specifics I'll leave up to you). |
Code Archives Forum