Page 1 sur 1
Problème avec GadgetTooltip
Publié : mar. 23/mars/2010 15:33
par MLD
Bonjour a tous
J'ai une fenêtre toujours au premier plan avec StikyWindow(id,1).
j'ai un bouton éloigné du bord de la fenêtre. le tooltip est sur le bouton.
Dans ce cas l'étiquette du tooltip se retrouve sous la fenêtre.
Quelqu'un connait'il la solution, pour que l'étiquette aparaisse au dessus de la fenêtre, ou bien est-ce un Bug?
Merci
Michel
Re: Problème avec GadgetTooltip
Publié : mar. 23/mars/2010 18:24
par Ar-S
ça doit être un bug de ton système car pour moi pas de soucis.
Essaye ce code.
Code : Tout sélectionner
Enumeration
#Window_0
#Button_0
EndEnumeration
Global Button_0_Tooltip
;}
; Create tooltip
Procedure GadgetBalloonToolTip(WindowNumber.l, GadgetNumber.l, Text.s)
Protected Tooltip.l, Balloon.TOOLINFO
Tooltip = CreateWindowEx_(0, "ToolTips_Class32", "", #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON, 0, 0, 0, 0, WindowID(WindowNumber), 0, GetModuleHandle_(0), 0)
SendMessage_(Tooltip, #TTM_SETTIPTEXTCOLOR, GetSysColor_(#COLOR_INFOTEXT), 0)
SendMessage_(Tooltip, #TTM_SETTIPBKCOLOR, GetSysColor_(#COLOR_INFOBK), 0)
SendMessage_(Tooltip, #TTM_SETMAXTIPWIDTH, 0, 180)
Balloon\cbSize = SizeOf(TOOLINFO)
Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
If IsGadget(GadgetNumber)
Balloon\hwnd = GadgetID(GadgetNumber)
Balloon\uId = GadgetID(GadgetNumber)
Else
Balloon\hwnd = GadgetNumber
Balloon\uId = GadgetNumber
EndIf
Balloon\lpszText = @Text
SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
ProcedureReturn Tooltip
EndProcedure
; Change tooltip text
Procedure ChangeGadgetBalloonToolTip(Tooltip.l, GadgetNumber.l, Text.s)
Protected Balloon.TOOLINFO
Balloon\cbSize = SizeOf(TOOLINFO)
Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
If IsGadget(GadgetNumber)
Balloon\hwnd = GadgetID(GadgetNumber)
Balloon\uId = GadgetID(GadgetNumber)
Else
Balloon\hwnd = GadgetNumber
Balloon\uId = GadgetNumber
EndIf
Balloon\lpszText = @Text
SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
EndProcedure
; Free tooltip
Procedure FreeBalloonTooltip(Tooltip.l)
DestroyWindow_(Tooltip.l)
EndProcedure
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 450, 200, 400, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
StickyWindow(#Window_0,1)
ButtonGadget(#Button_0, 90, 135, 210, 90, "Gadget_0")
Button_0_Tooltip = GadgetBalloonToolTip(#Window_0, #Button_0, "Suis-je derriere ou devant, telle est la question.")
EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
Select WaitWindowEvent()
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
ForEver
Re: Problème avec GadgetTooltip
Publié : mar. 23/mars/2010 19:12
par Le Soldat Inconnu
ça arrive parfois, c'est plus un bug de Windows que de PB je pense
Re: Problème avec GadgetTooltip
Publié : mer. 24/mars/2010 9:06
par MLD
Merci a Ar-S et au soldat
Ar-S ton code est OK
Le Soldat Inconnu a écrit :ça arrive parfois, c'est plus un bug de Windows que de PB je pense
Humm, un tooltip est une fenêtre. Si StikyWindow a été oublier dans la lib PB, le problème est reproduit

Re: Problème avec GadgetTooltip
Publié : mer. 24/mars/2010 9:40
par Le Soldat Inconnu
Moi, j'ai le souci sur mon XP avec des appli non PB et les tooltips qui reste en arrière plan, par exemple, derrière la barre des taches pour les tooltip du systray. C'est pour ça que je pense à un prob de windows
Re: Problème avec GadgetTooltip
Publié : mer. 24/mars/2010 10:39
par Ar-S
C'est clair, les tooltips de la barre des taches qui s'affichent derrière est un soucis récurent. Le pire est que ça ne le fait pas tout le temps.
Re: Problème avec GadgetTooltip
Publié : mer. 24/mars/2010 12:51
par PAPIPP
Bonjour à tous
Chez moi ça fonctionne bien
Pour obtenir le tooltip après avoir cliqué le bouton gadget_0 j'ai modifié le Prg
Code : Tout sélectionner
Enumeration
#Window_0
#Button_0
EndEnumeration
Global Button_0_Tooltip
;}
; Create tooltip
Procedure GadgetBalloonToolTip(WindowNumber.l,GadgetNumber.l,Text.s)
Protected Tooltip.l,Balloon.TOOLINFO
Tooltip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID(WindowNumber),0,GetModuleHandle_(0),0)
SendMessage_(Tooltip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
SendMessage_(Tooltip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
SendMessage_(Tooltip,#TTM_SETMAXTIPWIDTH,0,180)
Balloon\cbSize=SizeOf(TOOLINFO)
Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
If IsGadget(GadgetNumber)
Balloon\hwnd=GadgetID(GadgetNumber)
Balloon\uId=GadgetID(GadgetNumber)
Else
Balloon\hwnd=GadgetNumber
Balloon\uId=GadgetNumber
EndIf
Balloon\lpszText=@Text
SendMessage_(Tooltip,#TTM_ADDTOOL,0,@Balloon)
ProcedureReturn Tooltip
EndProcedure
; Change tooltip text
Procedure ChangeGadgetBalloonToolTip(Tooltip.l,GadgetNumber.l,Text.s)
Protected Balloon.TOOLINFO
Balloon\cbSize=SizeOf(TOOLINFO)
Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
If IsGadget(GadgetNumber)
Balloon\hwnd=GadgetID(GadgetNumber)
Balloon\uId=GadgetID(GadgetNumber)
Else
Balloon\hwnd=GadgetNumber
Balloon\uId=GadgetNumber
EndIf
Balloon\lpszText=@Text
SendMessage_(Tooltip,#TTM_ADDTOOL,0,@Balloon)
EndProcedure
; Free tooltip
Procedure FreeBalloonTooltip(Tooltip.l)
DestroyWindow_(Tooltip.l)
EndProcedure
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0,450,200,400,400,"Window_0",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
StickyWindow(#Window_0,1)
ButtonGadget(#Button_0,90,135,210,90,"Gadget_0")
Button_0_Tooltip=GadgetBalloonToolTip(#Window_0,#Button_0,"Suis-je derriere ou devant, telle est la question.")
EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
Select WaitWindowEvent()
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
Button_0_Tooltip=GadgetBalloonToolTip(#Window_0,#Button_0,"Suis-je derriere ou devant, telle est la question.") ; MODIF
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
ForEver
A+
PP
Re: Problème avec GadgetTooltip
Publié : mer. 24/mars/2010 14:19
par MLD
Bonjour PAPPIP
Oui ce code fonctionne bien. C'est le tooltip d'origine qui a un problème.
Merci a toi
Michel