github.com/secoba/wails/v2@v2.6.4/internal/frontend/desktop/windows/winc/tooltip.go (about) 1 //go:build windows 2 3 /* 4 * Copyright (C) 2019 The Winc Authors. All Rights Reserved. 5 * Copyright (C) 2010-2013 Allen Dang. All Rights Reserved. 6 */ 7 8 package winc 9 10 import ( 11 "syscall" 12 "unsafe" 13 14 "github.com/secoba/wails/v2/internal/frontend/desktop/windows/winc/w32" 15 ) 16 17 type ToolTip struct { 18 ControlBase 19 } 20 21 func NewToolTip(parent Controller) *ToolTip { 22 tp := new(ToolTip) 23 24 tp.InitControl("tooltips_class32", parent, w32.WS_EX_TOPMOST, w32.WS_POPUP|w32.TTS_NOPREFIX|w32.TTS_ALWAYSTIP) 25 w32.SetWindowPos(tp.Handle(), w32.HWND_TOPMOST, 0, 0, 0, 0, w32.SWP_NOMOVE|w32.SWP_NOSIZE|w32.SWP_NOACTIVATE) 26 27 return tp 28 } 29 30 func (tp *ToolTip) SetTip(tool Controller, tip string) bool { 31 var ti w32.TOOLINFO 32 ti.CbSize = uint32(unsafe.Sizeof(ti)) 33 if tool.Parent() != nil { 34 ti.Hwnd = tool.Parent().Handle() 35 } 36 ti.UFlags = w32.TTF_IDISHWND | w32.TTF_SUBCLASS /* | TTF_ABSOLUTE */ 37 ti.UId = uintptr(tool.Handle()) 38 ti.LpszText = syscall.StringToUTF16Ptr(tip) 39 40 return w32.SendMessage(tp.Handle(), w32.TTM_ADDTOOL, 0, uintptr(unsafe.Pointer(&ti))) != w32.FALSE 41 } 42 43 func (tp *ToolTip) WndProc(msg uint, wparam, lparam uintptr) uintptr { 44 return w32.DefWindowProc(tp.hwnd, uint32(msg), wparam, lparam) 45 }