Tooltip et Toolbar

Partagez votre expérience de PureBasic avec les autres utilisateurs.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Tooltip et Toolbar

Message 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
Dernière modification par nico le mer. 23/avr./2008 21:14, modifié 1 fois.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Woot. Je savais pas qu'on pouvait faire ça. Merci pour le code.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Super ! :D
Neosis
Messages : 113
Inscription : dim. 24/févr./2008 20:11

Message par Neosis »

+1 pour toi nico :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'ai modifié le code!
Répondre