Bannan

ToolTips Unicode (example)

Nov 6th, 2025
1,475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. ; Кодировка сценария UTF-8 with BOM !!!
  3. ;
  4.  
  5. Unicode true
  6.  
  7. !define MUI_COMPONENTSPAGE_NODESC
  8. !include MUI2.nsh
  9. !include LogicLib.nsh
  10.  
  11. Name "Unicode_tooltips"
  12. OutFile "ToolTips4U.exe"
  13. XPStyle on
  14.  
  15. !insertmacro MUI_PAGE_COMPONENTS
  16. !insertmacro MUI_PAGE_INSTFILES
  17. !insertmacro MUI_LANGUAGE English
  18.  
  19. Section Foo SID_FOO
  20. SectionEnd
  21. Section Bar SID_BAR
  22. SectionEnd
  23. Section Baz SID_BAZ
  24. SectionEnd
  25.  
  26. var ttip
  27.  
  28. !define WS_POPUP 0x80000000
  29. !define TTF_SUBCLASS    0x010
  30. !define /math TTM_ACTIVATE ${WM_USER} + 1
  31. !define /math TTM_ADDTOOLW ${WM_USER} + 50
  32. !define /math TTM_SETTOOLINFOW ${WM_USER} + 54
  33. !define /math TTM_TRACKACTIVATE ${WM_USER} + 17
  34. !define /math TTM_TRACKPOSITION ${WM_USER} + 18
  35. !define /math TTM_POP ${WM_USER} + 28
  36. !define /math TTM_POPUP ${WM_USER} + 34
  37.  
  38. Function .onMouseOverSection
  39.   ${If} $0 = -1
  40.   killtip:
  41.       SendMessage $ttip ${TTM_ACTIVATE} 0 0
  42.       Return
  43.   ${EndIf}
  44.   StrCpy $2 ""
  45.   ${If} $ttip = 0
  46.       System::Call 'USER32::CreateWindowEx(i${WS_EX_TOPMOST},t"tooltips_class32",i,i${WS_POPUP},i,i,i,i,i0,i,i,i)i.r2'
  47.       StrCpy $ttip $2
  48.   ${EndIf}
  49.   StrCpy $1 ""
  50.   ${Select} $0
  51.   ${Case} ${SID_FOO}
  52.       StrCpy $1 "Основной модуль программы (超级链接)"
  53.   ${Case} ${SID_BAR}
  54.       StrCpy $1 "Компоненты программы (访问我的博客)"
  55.   ${Case} ${SID_BAZ}
  56.       StrCpy $1 "Дополнительные инструменты"
  57.   ${EndSelect}
  58.   FindWindow $3 "#32770" "" $HWNDPARENT
  59.   System::Call '*(i44,i${TTF_SUBCLASS},i$3,i0x678,i,i,i,i,i0,tr1,i0)i.r1'
  60.   SendMessage $2 ${TTM_ADDTOOLW} 0 $1
  61.   SendMessage $ttip ${TTM_SETTOOLINFOW} 0 $1
  62.   SendMessage $ttip ${TTM_ACTIVATE} 1 0
  63.   SendMessage $ttip ${TTM_TRACKACTIVATE} 1 $1
  64.   System::Free $1
  65.   ${If} $2 <> 0
  66.       ;BUGFIX: Sometimes we get an initial onMouseOverSection call with no place to show a tip
  67.       System::Call 'USER32::IsWindowVisible(ir3)i.r0'
  68.       ${IfThen} $0 = 0 ${|} goto killtip ${|}
  69.   ${EndIf}
  70. FunctionEnd
Advertisement
Add Comment
Please, Sign In to add comment