How do I show a tooltip for the header area of a Purebasic ListIconGadget? (windows os)
I think something similar like this photo.

Thank you in advance for your help!

Code: Select all
Global TTip,ti.TOOLINFO
#TTS_BUBBLE = $40
#TTF_TRACK = $20
#TTF_ABSOLUTE = $80
ti.TOOLINFO
ti\cbSize = SizeOf(ti)
ti\hInst = GetModuleHandle_(0)
TTip = CreateWindowEx_(#WS_EX_TOPMOST, "tooltips_class32", 0, #TTS_ALWAYSTIP| #TTS_NOPREFIX| #WS_POPUP| #TTS_BUBBLE,0,0,0,0, 0, 0, GetModuleHandle_(0), 0)
SetWindowTheme_(TTip, @null.w, @null.w)
SendMessage_(ttip,#TTM_SETDELAYTIME,#TTDT_INITIAL,0)
SendMessage_(ttip,#TTM_SETDELAYTIME,#TTDT_AUTOPOP,1500)
SendMessage_(TTip,#TTM_SETTIPTEXTCOLOR,$0202FD,0)
SendMessage_(TTip,#TTM_SETTIPBKCOLOR,$DCFFFF,0)
SendMessage_(TTip,#TTM_SETTIPBKCOLOR,$DCFFFF,0)
;SetRect_(r.RECT,5,5,5,5) ;Tip Margins
;SendMessage_(ttip,#TTM_SETMARGIN,0,r)
LoadFont(0,"Arial",12)
OpenWindow(0, 0, 0, 640, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 620, 280, "Column 0", 150,#PB_ListIcon_GridLines)
SetGadgetFont(0,FontID(0))
AddGadgetColumn(0, 1, "Column 1" , 150)
AddGadgetColumn(0, 2, "Column 2" , 150)
For i = 0 To 10
AddGadgetItem(0, i, "Row "+Str(i)+" Column "+Str(1)+Chr(10)+"Row "+Str(i)+" Column "+Str(2)+Chr(10)+"Row "+Str(i)+" Column "+Str(3)+Chr(10))
Next
header = SendMessage_(GadgetID(0),#LVM_GETHEADER,0,0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #WM_MOUSEMOVE
GetCursorPos_ (@p.POINT)
ScreenToClient_ (header, @p)
h.HD_HITTESTINFO
h\pt\x = p\x
h\pt\y = p\y
hitem = SendMessage_(header,#HDM_HITTEST,0,@h)
If hitem < 0
SendMessage_(TTip, #TTM_ACTIVATE, 0, ti)
Else
SendMessage_(TTip, #TTM_ACTIVATE, 1, ti)
EndIf
Select hitem
Case 0
ti\uId = header
ti\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
text$ = "Header Column 0"+#CRLF$+"Second Line"
ti\lpszText = @text$
SendMessage_(TTip, #TTM_SETTITLE, 0, "Column 0 Info")
SendMessage_(TTip, #TTM_ADDTOOL, 0, ti)
Case 1
ti\uId = header
ti\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
ti\lpszText = @"Header Column 1"
SendMessage_(TTip, #TTM_SETTITLE, 1, "Column 1 Info")
SendMessage_(TTip, #TTM_ADDTOOL, 0, ti)
Case 2
ti\uId = header
ti\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
ti\lpszText = @"Header Column 2"
SendMessage_(TTip, #TTM_SETTITLE, 2, "Column 2 Info")
SendMessage_(TTip, #TTM_ADDTOOL, 0, ti)
EndSelect
EndSelect
Until Quit = 1
Is there a way to modify this code so that a tooltip immediately pops up if the mouse moves over a different column header even if an existing tooltip is still showing ? Ie, I would like to achieve the same behavior as the default system tooltips for the minimize - maximize - close buttons?RASHAD wrote: Tue Apr 26, 2016 5:17 pm HiCode: Select all
Global TTip,ti.TOOLINFO #TTS_BUBBLE = $40 #TTF_TRACK = $20 #TTF_ABSOLUTE = $80 ti.TOOLINFO ti\cbSize = SizeOf(ti) ti\hInst = GetModuleHandle_(0) TTip = CreateWindowEx_(#WS_EX_TOPMOST, "tooltips_class32", 0, #TTS_ALWAYSTIP| #TTS_NOPREFIX| #WS_POPUP| #TTS_BUBBLE,0,0,0,0, 0, 0, GetModuleHandle_(0), 0) SetWindowTheme_(TTip, @null.w, @null.w) SendMessage_(ttip,#TTM_SETDELAYTIME,#TTDT_INITIAL,0) SendMessage_(ttip,#TTM_SETDELAYTIME,#TTDT_AUTOPOP,1500) SendMessage_(TTip,#TTM_SETTIPTEXTCOLOR,$0202FD,0) SendMessage_(TTip,#TTM_SETTIPBKCOLOR,$DCFFFF,0) SendMessage_(TTip,#TTM_SETTIPBKCOLOR,$DCFFFF,0) ;SetRect_(r.RECT,5,5,5,5) ;Tip Margins ;SendMessage_(ttip,#TTM_SETMARGIN,0,r) LoadFont(0,"Arial",12) OpenWindow(0, 0, 0, 640, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ListIconGadget(0, 10, 10, 620, 280, "Column 0", 150,#PB_ListIcon_GridLines) SetGadgetFont(0,FontID(0)) AddGadgetColumn(0, 1, "Column 1" , 150) AddGadgetColumn(0, 2, "Column 2" , 150) For i = 0 To 10 AddGadgetItem(0, i, "Row "+Str(i)+" Column "+Str(1)+Chr(10)+"Row "+Str(i)+" Column "+Str(2)+Chr(10)+"Row "+Str(i)+" Column "+Str(3)+Chr(10)) Next header = SendMessage_(GadgetID(0),#LVM_GETHEADER,0,0) Repeat Select WaitWindowEvent() Case #PB_Event_CloseWindow Quit = 1 Case #WM_MOUSEMOVE GetCursorPos_ (@p.POINT) ScreenToClient_ (header, @p) h.HD_HITTESTINFO h\pt\x = p\x h\pt\y = p\y hitem = SendMessage_(header,#HDM_HITTEST,0,@h) If hitem < 0 SendMessage_(TTip, #TTM_ACTIVATE, 0, ti) Else SendMessage_(TTip, #TTM_ACTIVATE, 1, ti) EndIf Select hitem Case 0 ti\uId = header ti\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS text$ = "Header Column 0"+#CRLF$+"Second Line" ti\lpszText = @text$ SendMessage_(TTip, #TTM_SETTITLE, 0, "Column 0 Info") SendMessage_(TTip, #TTM_ADDTOOL, 0, ti) Case 1 ti\uId = header ti\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS ti\lpszText = @"Header Column 1" SendMessage_(TTip, #TTM_SETTITLE, 1, "Column 1 Info") SendMessage_(TTip, #TTM_ADDTOOL, 0, ti) Case 2 ti\uId = header ti\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS ti\lpszText = @"Header Column 2" SendMessage_(TTip, #TTM_SETTITLE, 2, "Column 2 Info") SendMessage_(TTip, #TTM_ADDTOOL, 0, ti) EndSelect EndSelect Until Quit = 1