je crois avoir vu une fonction dans les apis de windows qui permet faire clignoter un nom de fenetre dans la barre de tache, je n'ai pas trouvé d'equivalent pour un gadgettext mais je continue de chercher

Code : Tout sélectionner
; English forum: http://purebasic.myforums.net/viewtopic.php?t=9199&highlight=
; Author: Danilo
; Date: 17. January 2004
;
; Modifié Par Coolman Le 25 Dec 2005
Global TextGadgetBackground, TextGadgetForeground
Color= GetSysColor_(#COLOR_3DFACE) ; get color of the background
TextGadgetBackground = CreateSolidBrush_(Color)
TextGadgetForeground = $0000FF
Procedure WinProc(hWnd,Msg,wParam,lParam)
If Msg = #WM_CTLCOLORSTATIC And lParam = GadgetID(0)
SetBkMode_(wParam,#TRANSPARENT)
SetTextColor_(wParam,TextGadgetForeground)
ProcedureReturn TextGadgetBackground
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
EndProcedure
Mess$="Texte Coloré Clignotant"
OpenWindow(0,0,0,350,40,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,Mess$)
SetWindowCallback(@WinProc())
CreateGadgetList(WindowID())
TextGadget(0,10,10,190,20,Mess$)
Compt=0 : Stime=ElapsedMilliseconds()
Repeat
If ElapsedMilliseconds()>Stime+1000 ;Temporise declenchement 1 seconde
Compt=Compt+1
If Compt=1
TextGadgetForeground = $0000FF
Else
TextGadgetForeground = $996600
Compt=0
EndIf
SetGadgetText(0, Mess$)
Stime=ElapsedMilliseconds()
EndIf
Delay(1)
Until WaitWindowEvent()=#PB_EventCloseWindow
DeleteObject_(TextGadgetBackground)
DeleteObject_(TextGadgetForeground)
End
Normal, tu utilises WaitWindowEvent() pour récupérer les évènements.Coolman a écrit :J'ai fait un petit essai base sur un code trouvé dans codearchive je crois, ca devrait clignoter tout le temps mais dans les faits, ca ne le fait que si je bouge la souris dans la fenetre, on dirait que l'affichage n'est raffraichi que dans cette condition, bizarre...
note : test effectué sous win 98 se
Voici le code :
Code : Tout sélectionner
; English forum: http://purebasic.myforums.net/viewtopic.php?t=9199&highlight= ; Author: Danilo ; Date: 17. January 2004 ; ; Modifié Par Coolman Le 25 Dec 2005 Global TextGadgetBackground, TextGadgetForeground Color= GetSysColor_(#COLOR_3DFACE) ; get color of the background TextGadgetBackground = CreateSolidBrush_(Color) TextGadgetForeground = $0000FF Procedure WinProc(hWnd,Msg,wParam,lParam) If Msg = #WM_CTLCOLORSTATIC And lParam = GadgetID(0) SetBkMode_(wParam,#TRANSPARENT) SetTextColor_(wParam,TextGadgetForeground) ProcedureReturn TextGadgetBackground Else ProcedureReturn #PB_ProcessPureBasicEvents EndIf EndProcedure Mess$="Texte Coloré Clignotant" OpenWindow(0,0,0,350,40,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,Mess$) SetWindowCallback(@WinProc()) CreateGadgetList(WindowID()) TextGadget(0,10,10,190,20,Mess$) Compt=0 : Stime=ElapsedMilliseconds() Repeat If ElapsedMilliseconds()>Stime+1000 ;Temporise declenchement 1 seconde Compt=Compt+1 If Compt=1 TextGadgetForeground = $0000FF Else TextGadgetForeground = $996600 Compt=0 EndIf SetGadgetText(0, Mess$) Stime=ElapsedMilliseconds() EndIf Delay(1) Until WaitWindowEvent()=#PB_EventCloseWindow DeleteObject_(TextGadgetBackground) DeleteObject_(TextGadgetForeground) End
Oui, un timer, c'etait mon idee de depart, en fait je voudrais faire une fonction dedié a cette tache pour mon prog compteur de temps sur internet ou pour un autre, mais je n'ai pas beaucoup de temps en ce moment, alors pour l'instant je vais me contenter de gerer tout ca dans la boucle principal du programme...Dr. Dri a écrit :avec un timer sinon c'est pas plus simple ?
ca permet de garder le waitwindowevent()
Dri
Code : Tout sélectionner
; English forum: http://purebasic.myforums.net/viewtopic.php?t=9199&highlight=
; Author: Danilo
; Date: 17. January 2004
;
; Modifié Par Coolman Le 27 Dec 2005
Global TextGadgetBackground
Color= GetSysColor_(#COLOR_3DFACE) ; get color of the background
Fondecran=CreateSolidBrush_(Color)
TextGadgetBackground =Fondecran
Procedure WinProc(hWnd,Msg,wParam,lParam)
If Msg = #WM_CTLCOLORSTATIC And lParam = GadgetID(0)
SetBkMode_(wParam,#OPAQUE)
SetTextColor_(wParam,TextGadgetBackground)
ProcedureReturn TextGadgetBackground
Else
ProcedureReturn #PB_ProcessPureBasicEvents
EndIf
EndProcedure
Mess$=" Fond Gadgettext Clignotant "
OpenWindow(0,0,0,400,40,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,Mess$)
SetWindowCallback(@WinProc())
CreateGadgetList(WindowID())
TextGadget(0,10,10,260,20,Mess$)
Compt=0 : Stime=ElapsedMilliseconds()
Repeat
If ElapsedMilliseconds()>Stime+1000 ;Temporise declenchement 1 seconde
Compt=Compt+1
If Compt=1
TextGadgetBackground = $0000FF
Else
TextGadgetBackground = Fondecran
Compt=0
EndIf
SetGadgetText(0, Mess$)
Stime=ElapsedMilliseconds()
EndIf
Delay(1)
Until WindowEvent()=#PB_EventCloseWindow
DeleteObject_(TextGadgetBackground)
End
Y'a un tool dans l'ide PB qui fait ca directementCoolman a écrit :Est ce quelqu'un a fait une procedure ou un prog pour choisir une couleur dans une boite window et transferer la valeur par exemple dans le presse papier ??? (exemple $0000FF ou RVB(x,x,x)). c'est facile avec window directement, mais se serait plus rapide avec un copier coller direct dans le code...
MerciDr. Dri a écrit :Y'a un tool dans l'ide PB qui fait ca directementCoolman a écrit :Est ce quelqu'un a fait une procedure ou un prog pour choisir une couleur dans une boite window et transferer la valeur par exemple dans le presse papier ??? (exemple $0000FF ou RVB(x,x,x)). c'est facile avec window directement, mais se serait plus rapide avec un copier coller direct dans le code...
Dri