Ooops
November 25, 2020, 05:59:20 AM

Author Topic: [bb] Tooltips by plash [ 1+ years ago ]  (Read 631 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Tooltips by plash [ 1+ years ago ]
« on: June 29, 2017, 12:28:39 AM »
Title : Tooltips
Author : plash
Posted : 1+ years ago

Description : Snapshot
[img]img482.imageshack.us/img482/1323/tooltipvz2.html">


Code :
Code: BlitzBasic
  1. Tooltips.bb
  2.  
  3. ;#Region Color Keys
  4. Const COLOR_SCROLLBAR                           = 0             ; Scroll bar gray area.
  5.  
  6. Const COLOR_BACKGROUND                          = 1             ; Desktop.
  7.  
  8. Const COLOR_DESKTOP                                     = 1
  9.  
  10. Const COLOR_ACTIVECAPTION                       = 2             ; Active window title bar.
  11.                                                                                         ; Specifies the left side color in the color gradient of an active window's title bar
  12.                                                                                         ; if the gradient effect is enabled.  (Except Windows NT and Windows 95)
  13.  
  14. Const COLOR_INACTIVECAPTION                     = 3             ; Inactive window caption.
  15.                                                                                         ; Specifies the left side color in the color gradient of an inactive window's
  16.                                                                                         ; title bar if the gradient effect is enabled.
  17.                                                                                         ; Windows NT and Windows 95:  This remark does not apply.
  18.  
  19. Const COLOR_MENU                                        = 4             ; Menu background.
  20.  
  21. Const COLOR_WINDOW                                      = 5             ; Window background.
  22.  
  23. Const COLOR_WINDOWFRAME                         = 6             ; Window frame.
  24.  
  25. Const COLOR_MENUTEXT                            = 7             ; Text in menus.
  26.  
  27. Const COLOR_WINDOWTEXT                          = 8             ; Text in windows.
  28.  
  29. Const COLOR_CAPTIONTEXT                         = 9             ; Text in caption, size box, And scroll bar arrow box.
  30.  
  31. Const COLOR_ACTIVEBORDER                        = 10    ; Active window border.
  32.  
  33. Const COLOR_INACTIVEBORDER                      = 11    ; Inactive window border.
  34.  
  35. Const COLOR_APPWORKSPACE                        = 12    ; Background color of multiple document interface (MDI) applications.
  36.  
  37. Const COLOR_HIGHLIGHT                           = 13    ; Item(s) selected in a control.
  38.  
  39. Const COLOR_HIGHLIGHTTEXT                       = 14    ; Text of item(s) selected in a control.
  40.  
  41. Const COLOR_3DFACE                                      = 15    ; Face color For three-dimensional display elements and for dialog box backgrounds.
  42.  
  43. Const COLOR_BTNFACE                                     = 15   
  44.  
  45. Const COLOR_3DSHADOW                            = 16    ; Shadow color for three-dimensional display elements  
  46.  
  47. Const COLOR_BTNSHADOW                           = 16    ; (For edges facing away fromthe light source.)
  48.  
  49. Const COLOR_GRAYTEXT                            = 17    ; Grayed (disabled) text. This color is set to 0 if the current display driver
  50.                                                                                         ; does not support a solid gray color.
  51.  
  52. Const COLOR_BTNTEXT                                     = 18    ; Text on push buttons.
  53.  
  54. Const COLOR_INACTIVECAPTIONTEXT         = 19    ; Color of text in an inactive caption.
  55.  
  56. Const COLOR_3DHILIGHT                           = 20    ; Highlight color For three-dimensional display elements.
  57.  
  58. Const COLOR_3DHIGHLIGHT                         = 20    ; (For edges facing the light source.)
  59.  
  60. Const COLOR_BTNHILIGHT                          = 20
  61.  
  62. Const COLOR_BTNHIGHLIGHT                        = 20
  63.  
  64. Const COLOR_3DDKSHADOW                          = 21    ; Dark shadow for three-dimensional display elements.
  65.  
  66. Const COLOR_3DLIGHT                             = 22    ; Light color for three-dimensional display elements
  67.                                                                                         ; (For edges facing the light source.)
  68.  
  69. Const COLOR_INFOTEXT                            = 23    ; Text color for tooltip controls.
  70.  
  71. Const COLOR_INFOBK                                      = 24    ; Background color fFor tooltip controls.
  72.  
  73. Const COLOR_ALTERNATEBTNFACE            = 25    ; I could not find this in the windows documenation.  A few websites that have info
  74.                                                                                         ; on WINE for Linux listed this contant.  I'm not sure if windows uses it though.
  75.  
  76. Const COLOR_HOTLIGHT                            = 26    ; Color For a hot-tracked item. Single clicking a hot-tracked item executes the item.
  77.                                                                                         ; Windows NT And Windows 95:  This value is not supported.
  78.  
  79. Const COLOR_GRADIENTACTIVECAPTION       = 27    ; Right side color in the color gradient of an active window's title bar.
  80.                                                                                         ; COLOR_ACTIVECAPTION specifies the left side Color.
  81.                                                                                         ; Use SPI_GETGRADIENTCAPTIONS with the SystemParametersInfo function
  82.                                                                                         ; to determine whether the gradient effect is enabled.
  83.                                                                                         ; Windows NT And Windows 95:  This value is not supported.
  84.  
  85. Const COLOR_GRADIENTINACTIVECAPTION = 28        ; Right side color in the color gradient of an inactive window's title bar.
  86.                                                                                         ; COLOR_INACTIVECAPTION specifies the left side Color.
  87.                                                                                         ; Windows NT And Windows 95:  This value is not supported.
  88.  
  89. Const COLOR_MENUHILIGHT                         = 29    ; The color used to highlight menu items when the menu appears as a flat menu
  90.                                                                                         ; (see SystemParametersInfo). The highlighted menu item is outlined with COLOR_HIGHLIGHT.
  91.                                                                                         ; Windows 2000/NT and Windows Me/98/95:  This value is not supported.
  92.  
  93. Const COLOR_MENUBAR                             = 30    ; The background color for the menu bar when menus appear as flat menus
  94.                                                                                         ; (see SystemParametersInfo).  However, COLOR_MENU continues to specify
  95.                                                                                         ; the background color of the menu popup.
  96.                                                                                         ; Windows 2000/NT and Windows Me/98/95:  This value is not supported.
  97.  
  98. ;#End Region
  99.  
  100. Type tooltip
  101.         Field Msg$
  102.         Field Gadget
  103. End Type
  104.  
  105.  
  106. Global tooltiptimer = CreateTimer(0.8)
  107. ;Global LastMOG; CHANGE THIS TO A VALID GADGET HANDLE IN THE MAIN PROGRAM
  108.  
  109. Function CreateTooltip(Msg$, Gadget)
  110.         Tip.tooltip = New tooltip
  111.         TipMsg$ = Msg$
  112.         TipGadget = Gadget
  113.        
  114. End Function
  115.  
  116. Function UpdateTooltips()
  117.        
  118.         For tip.tooltip = Each tooltip
  119.                 If MouseOverGadget(tipgadget)
  120.                         If Not LastMOG = tipgadget
  121.                                
  122.                                 LastMOG = tipgadget
  123.                                
  124.                                 MouseXSpeed():MouseYSpeed()
  125.                                 ;buffer% = GraphicsBuffer()
  126.                                  
  127.                                 SetBuffer DesktopBuffer()
  128.                                 x = MouseX()
  129.                                 y = MouseY() + 18
  130.                                 wd = StringWidth(tipmsg$) + 6
  131.                                 ht = 20
  132.                                
  133.                                 tmpimage = CreateImage(wd, ht)
  134.                                                 CopyRect x, y, wd, ht, 0, 0, DesktopBuffer(), ImageBuffer(tmpimage)
  135.                                                
  136.                                         Color 0, 0, 0
  137.                                         Rect x, y, wd, ht
  138.                                
  139.                                         SysColor(COLOR_INFOBK)
  140.                                         Rect x + 1, y + 1, wd - 2, ht - 2
  141.                                        
  142.                                         SysColor(COLOR_INFOTEXT)
  143.                                         Text x + 3, y + 3, tipmsg$
  144.                                        
  145.                                 While Abs(MouseXSpeed() + MouseYSpeed()) = 0
  146.                                         Delay 80
  147.                                 Wend
  148.                                        
  149.                                         Color 0, 0, 0
  150.                                         Rect x, y, wd, ht, 1
  151.                                        
  152.                                         DrawImage tmpimage, x, y
  153.                                 FreeImage tmpimage
  154.                                        
  155.                                 ;If buffer% SetBuffer buffer%
  156.                         EndIf
  157.                 EndIf
  158.         Next
  159.  
  160. End Function
  161.  
  162. Function SysColor(SystemColor)
  163.         Color GetSysColorR(SystemColor), GetSysColorG(SystemColor), GetSysColorB(SystemColor)
  164. End Function
  165.  
  166. Function GetSysColorR(SystemColor)
  167.         Return (api_GetSysColor(SystemColor) And $000000FF)
  168. End Function
  169.  
  170. Function GetSysColorG(SystemColor)
  171.         Return (api_GetSysColor(SystemColor) And $0000FF00) Shr 8
  172. End Function
  173.  
  174. Function GetSysColorB(SystemColor)
  175.         Return (api_GetSysColor(SystemColor) And $00FF0000) Shr 16
  176. End Function
  177.  
  178. Function MouseOverGadget(Gadget)
  179.         If GadgetHidden(Gadget) = False
  180.                 mx = GMouseX( Gadget )
  181.                 my = GMouseY( Gadget )
  182.                
  183.                 x = 0
  184.                 y = 0
  185.                 w = GadgetWidth(Gadget)
  186.                 h = GadgetHeight(Gadget)
  187.                
  188.                 If mx > x And my > y And mx < w And my < h
  189.                         Return True
  190.                 Else
  191.                         Return False
  192.                 EndIf
  193.         Else
  194.                 Return False
  195.         EndIf
  196. End Function
  197.  
  198. Function GMouseX( Gadget = 0 )
  199.  
  200.         ; this mousex function will get the position of the mouse relative to any gadget. by Halo
  201.  
  202.         If Not Gadget Gadget=Desktop()
  203.         hwnd=QueryObject(Gadget,1)
  204.         buffer=CreateBank (8)
  205.         api_GetCursorPos (buffer)
  206.         api_ScreenToClient (hwnd, buffer)
  207.         x=PeekInt(buffer,0)
  208.         FreeBank buffer
  209.  
  210.         Return x
  211.  
  212. End Function
  213.  
  214. Function GMouseY( Gadget = 0 )
  215.  
  216.         ; this mousey function will get the position of the mouse relative to any gadget. thanks Halo
  217.  
  218.         If Not Gadget Gadget=Desktop()
  219.         hwnd=QueryObject(Gadget,1)
  220.         buffer=CreateBank(8)
  221.         api_GetCursorPos(buffer)
  222.         api_ScreenToClient(hwnd, buffer)
  223.         y=PeekInt(buffer,4)
  224.         FreeBank buffer
  225.  
  226.         Return y
  227.  
  228. End Function
  229.  
  230. Function GadgetHidden(gadget)
  231.         tmp = Not api_IsWindowVisible (QueryObject (gadget, 1))
  232.        
  233.         ;DebugLog "GadgetHidden(Wnd_Cstat) = " + tmp
  234.        
  235.         Return tmp
  236. End Function
  237.  
  238.  
  239. Example.bb
  240.  
  241. Include "Tooltips.bb"
  242.  
  243. Global win = CreateWindow("Testing!",100,100,200,200,0)
  244.  
  245. gad = CreateButton("HOne", 20, 20, 50, 21, win)
  246. gad2 = CreateButton("GTEST 2", 40, 40, 80, 21, win)
  247.  
  248. CreateTooltip "Hello", gad
  249. CreateTooltip "NUMBER 2", gad2
  250. Global LastMOG = win
  251.  
  252. Repeat
  253.         WaitEvent()
  254.         If EventID() = $803 Or KeyHit(1) Then End
  255.        
  256.         If EventID() = $4001
  257.                 If EventSource() = tooltiptimer
  258.                         If MouseOverGadget(LastMOG) = False Then LastMOG = win Else LastMOG = LastMOG
  259.                         UpdateTooltips()
  260.                 EndIf
  261.         EndIf
  262.        
  263. Forever


Comments :


Ked(Posted 1+ years ago)

 Very nice!


General McHonkadonk(Posted 1+ years ago)

 "Function api_getsyscolor not found"Probably being really stupid, I just started coding... am I supposed to change something?


Floyd(Posted 1+ years ago)

 It's a Windows API function. You need the appropriate decls file to make this work. Even then it may not be right on newer versions of Windows. On Windows 7 64-bit I get a message about an incompatible color scheme. The program runs, but the tooltips are displayed as black boxes.If you want to try then look here: <a href="codearcsbcfe.html?code=1179" target="_blank">decls for user32.dll[/url]Use this to make a plain text file and save it with the name  user32.decls in your BlitzPlususerlibs folder.The user32.dll is part of Windows.


General McHonkadonk(Posted 1+ years ago)

 Thanks, Floyd! Works on and off on 32-bit Windows 8. No error messages and usually works fine but occasionally just shows the floating text and it's garbled. Better than nothing for now


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal