Page 1 sur 1

Problème avec Tooltip!

Publié : dim. 13/nov./2005 15:13
par nico
Ce code ne fonctionne sur XP qu'avec les thèmes et je ne comprends pas pourquoi! :twisted:

Ne me proposez pas de Lib, ce n'est pas là mon Pb!

Code : Tout sélectionner

#TTF_TRANSPARENT=$100 
#TTF_TRACK=$20 
#TTF_ABSOLUTE=$80 

Global hToolTip,ti.TOOLINFO 

Procedure CreateToolTip(hParent) 
     icex.INITCOMMONCONTROLSEX 
     ti.TOOLINFO 
     icex\dwSize = SizeOf(icex) 
     icex\dwICC  = #ICC_WIN95_CLASSES 
     
     InitCommonControlsEx_(@icex) 
     
     sczTipText.s="Texte" 
     sczTipTitle.s="Title" 
     
     hToolTip = CreateWindowEx_(#WS_EX_TOPMOST, "ToolTips_Class32", "",#WS_POPUP| #TTS_NOPREFIX | #TTS_ALWAYSTIP,#CW_USEDEFAULT, #CW_USEDEFAULT,#CW_USEDEFAULT, #CW_USEDEFAULT,#Null,0, GetModuleHandle_(0),#Null) 
     
     ti\cbSize = SizeOf(TOOLINFO) 
     ti\uFlags = #TTF_IDISHWND | #TTF_TRACK | #TTF_ABSOLUTE ;| #TTF_TRANSPARENT 
     ti\hwnd   = hParent 
     ti\uId    = hParent 
     ti\hinst  = GetModuleHandle_(0) 
     ti\lpszText  = @sczTipText 
     
     SendMessage_(hToolTip,#TTM_ADDTOOL,0,@ti) 
     SendMessage_(hToolTip, #TTM_SETMAXTIPWIDTH, 0, 300) 
     
     If sczTipTitle>"" 
          SendMessage_(hToolTip, #TTM_SETTITLE, 1, sczTipTitle) 
     EndIf 
     SendMessage_(hToolTip,#TTM_TRACKACTIVATE,1,@ti) 
EndProcedure 
                                              

If OpenWindow(0, 100, 100, 400, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar, "BallonTip") 
     
     CreateToolTip(WindowID(0)) 
     
     Repeat 
          EventID.l=WaitWindowEvent() 
          Select EventID 
               Case #WM_MOUSEMOVE 
                    point.POINT\x=EventlParam()& $FFFF 
                    point.POINT\y=EventlParam() >>16 
                    ClientToScreen_(WindowID(0),@point) 
                    SendMessage_(hToolTip, #TTM_TRACKPOSITION, 0,((point\y+14)<<16)+point\x+14) 
          EndSelect 
          
     Until EventID = #PB_EventCloseWindow 
EndIf 
End

Publié : dim. 13/nov./2005 15:56
par Backup
avec ou sans les themes activé ya un bug ligne 22
avec le debugger actif ! (mode F6 sous JAPBE)

Code : Tout sélectionner

 ti\hwnd   = GadgetID(11)

Publié : dim. 13/nov./2005 16:14
par nico
J'ai corrigé (merci Dobro), je viens de faire des essais sur win98, ça ne fonctionne pas non plus, ce qui parait logique ; encore faudrait t'il savoir pourquoi! :?

Publié : dim. 13/nov./2005 18:52
par nico
Ouf ça y est, 3 jours à faire des essais à cause d'une mauvaise déclaration d'une structure de PB. :mad:

Code : Tout sélectionner

Structure TOOLINFO1
     cbSize.l
     uFlags.l
     hwnd.l
     uId.l
     rect.RECT
     hinst.l
     lpszText.l
     lParam.l
EndStructure 
Merci à Denis au passage car il est à l'origine de nombreuse corrections de structures justement dans PB, c'est pour ça que j'ai fini par vérifier; si seulement Denis avait pu aussi voir l'erreur sur cellle-ci. :lol:

Code : Tout sélectionner

Debug SizeOf(TOOLINFO) 48 octets - erreur
Debug SizeOf(TOOLINFO1)  44 octets -bon

Publié : dim. 13/nov./2005 19:21
par Anonyme2
j'ai testé ton code, mis des débug partout, lu la doc MS pour finalement arriver à rien :oops:

Mais tu as fini par trouver :D

C'est assez pénible ces structures fausses

Publié : dim. 13/nov./2005 23:19
par nico
Je retombe sur un problème que tu as eu Denis avec les Ballons Tooltips; avec les thèmes activés plus rien et sans les thèmes j'ai le ballon. :?

Publié : dim. 13/nov./2005 23:55
par Backup
avec les thèmes activés plus rien et sans les thèmes j'ai le ballon. Confused
tiens ? c'est l'inverse de tout a l'heure ! :D

Publié : lun. 14/nov./2005 12:36
par nico
Oui mais cette fois c'est sans rapport avec la structure!

Ce qui m'ennuie le plus, c'est qu'on ne peut pas savoir si le prog utilise les thèmes ou pas; j'ai essayé avec IsThemeActive et AppThemed mais ça ne donne rien.