Page 1 sur 1

Tooltip et Toolbar

Publié : sam. 22/mars/2008 0:13
par nico
Je n'aime pas les Tooltips par défaut de la Toolbar alors j'ai créer cette petite procédure:


Procedure CreateToolTip()
   Protected ToolInfo.ToolInfo
 
   Global Tooltip.l
 
    #TTF_TRANSPARENT = $100

   Tooltip = CreateWindowEx_ (0, "tooltips_class32" , 0 , #WS_POPUP |#TTS_ALWAYSTIP,0, 0, 0, 0, 0, 0, 0, 0)
    SendMessage_ (Tooltip, #TTM_SETTIPTEXTCOLOR , RGB (0, 85, 223), 0)
    SendMessage_ (Tooltip, #TTM_SETTIPBKCOLOR , RGB (255, 255, 223), 0)
    SendMessage_ (Tooltip, #TTM_SETMAXTIPWIDTH , 0, 300)

    SendMessage_ (Tooltip, #TTM_SETTITLE , #TTI_INFO , "" )

    SendMessage_ (Tooltip, #TTM_SETDELAYTIME , #TTDT_AUTOPOP ,3000) ;Durée de l'apparition du Tooltip
    SendMessage_ (Tooltip, #TTM_SETDELAYTIME , #TTDT_INITIAL ,500) ;Délai avant l'apparition du Tooltip
EndProcedure

Procedure ModifyToolTip(ID_Window.l,ID_Gadget.l,Title.s,Text.s)
    Static ToolInfo.ToolInfo
   
     SendMessage_ (Tooltip, #TTM_ACTIVATE ,0,0)
     SendMessage_ (Tooltip, #TTM_DELTOOL ,0, @ToolInfo)
   
    ToolInfo\cbSize = SizeOf (ToolInfo)
    ToolInfo\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS | #TTF_TRANSPARENT
    ToolInfo\hwnd = WindowID (ID_Window)
    ToolInfo\uId = ToolBarID (ID_Gadget)
    ToolInfo\lpszText = @Text
     GetClientRect_ ( ToolBarID (ID_Gadget), @ToolInfo\rect)

     SendMessage_ (Tooltip, #TTM_ADDTOOL , 0, @ToolInfo)
     SendMessage_ (Tooltip, #TTM_SETTITLE , #TTI_INFO , Title)
     SendMessage_ (Tooltip, #TTM_ACTIVATE ,1,0)
EndProcedure

Procedure Callback(hwnd, msg, wParam, lParam)
  result= #PB_ProcessPureBasicEvents
   Select msg
     Case #WM_NOTIFY
          *pnmhdr.NMTBHOTITEM= lParam
           If *pnmhdr\hdr\code = -713 ;#TBN_HOTITEMCHANGE
               Select *pnmhdr\idnew
                   Case 1
                      ModifyToolTip(0,0, "Nouveau:" , "Ouvre un document vierge" )
                   Case 2
                      ModifyToolTip(0,0, "Ouvrir:" , "Charge un nouveau fichier" )
                   Case 3
                      ModifyToolTip(0,0, "Sauver:" , "Enregistre le fichier en cours" )
                   Default
                   SendMessage_ (Tooltip, #TTM_ACTIVATE ,0,0)
               EndSelect

           EndIf
     EndSelect
   ProcedureReturn result
EndProcedure

If OpenWindow (0, 0, 0, 220, 220, "ToolTip" , #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
  SetWindowCallback (@Callback(),0)

   CreateGadgetList ( WindowID (0))

   If CreateToolBar (0, WindowID (0))
     ToolBarStandardButton (1, #PB_ToolBarIcon_New )
     ToolBarStandardButton (2, #PB_ToolBarIcon_Open )
     ToolBarStandardButton (3, #PB_ToolBarIcon_Save )
     ToolBarSeparator ()
     ToolBarStandardButton (4, #PB_ToolBarIcon_Print )
     ToolBarStandardButton (5, #PB_ToolBarIcon_Find )
     ToolBarSeparator ()
   EndIf

  CreateToolTip()
  
   Repeat
    Event = WaitWindowEvent ()
   Until Event = #PB_Event_CloseWindow
EndIf

Publié : dim. 23/mars/2008 10:19
par poshu
Woot. Je savais pas qu'on pouvait faire ça. Merci pour le code.

Publié : dim. 23/mars/2008 11:27
par Backup
Super ! :D

Publié : lun. 24/mars/2008 9:03
par Neosis
+1 pour toi nico :)

Publié : mer. 23/avr./2008 21:14
par nico
J'ai modifié le code!