Boutons glissants [Résolu]
Publié : mar. 14/nov./2006 19:39
Bonjour a tous.
J'ai tenté de faire (avec l'aide de codes trouvé sur ce forum et le US) une fenetre avec des boutons qui arrivent de droite pour se loger à gauche, à leur place.
Normalement, il y a des images dans les boutons, mais je n'ai pas mis tout le code.Quoi qu'il en soit, avec ou sans images, j'ai le meme bleme.
Un demarrage sur 2 ou 3, les icones scintillent ou vibrent.
Pas tout le temps, c'est aléatoire.
Une fois c'est niquel, une fois ça vibre.
Quelqu'un pourrait me dire d'ou cela viens.
J'ai joué sur les tempo et la vitesse d'avancement, ça améliore mais c'est pas top.
Merci de votre aide
Bonne soirée
J'ai tenté de faire (avec l'aide de codes trouvé sur ce forum et le US) une fenetre avec des boutons qui arrivent de droite pour se loger à gauche, à leur place.
Normalement, il y a des images dans les boutons, mais je n'ai pas mis tout le code.Quoi qu'il en soit, avec ou sans images, j'ai le meme bleme.
Un demarrage sur 2 ou 3, les icones scintillent ou vibrent.

Pas tout le temps, c'est aléatoire.
Une fois c'est niquel, une fois ça vibre.

Quelqu'un pourrait me dire d'ou cela viens.
J'ai joué sur les tempo et la vitesse d'avancement, ça améliore mais c'est pas top.
Code : Tout sélectionner
Enumeration
#FormStartER = 1
EndEnumeration
Global Dim ListeLogicielsAutoriser.s(200,2)
ListeLogicielsAutoriser(1, 1) = "Logiciel1.exe"
ListeLogicielsAutoriser(2, 1) = "Logiciel2.exe"
ListeLogicielsAutoriser(3, 1) = "Logiciel2.exe"
Procedure.l myCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
Select uMsg
Case #WM_ERASEBKGND
ProcedureReturn
Case #WM_PAINT
For i = 1000 To 1002
If IsGadget(i)
x = GadgetX(i)
y = GadgetY(i)
SetRect_(Rect.RECT, x, y, x + GadgetWidth(i), y + GadgetHeight(i))
ValidateRect_(hWnd,Rect)
RedrawWindow_(GadgetID(i),0,0,$407)
EndIf
Next
PaintDesktop_(BeginPaint_(hWnd,ps.PAINTSTRUCT))
EndPaint_(hWnd,ps)
Case #WM_SIZING,#WM_MOVING
InvalidateRect_(hWnd,0,1)
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure.s DerniereOccurence(CheminComplet$)
NbreSlash = CountString(CheminComplet$, "\")
If Right(CheminComplet$, 1) = "\"
DerniereOccurence$ = StringField(CheminComplet$, NbreSlash, "\")
Else
DerniereOccurence$ = StringField(CheminComplet$, NbreSlash + 1, "\")
EndIf
ProcedureReturn DerniereOccurence$
EndProcedure
x = 800 : y = 500
HwndStartER = OpenWindow(#FormStartER, 216, 0, x, y, "StartER",#PB_Window_ScreenCentered| #PB_Window_WindowCentered)
CreateGadgetList(WindowID(#FormStartER))
SetWindowLong_(HwndStartER, #GWL_STYLE, GetWindowLong_(HwndStartER, #GWL_STYLE) & (~#WS_BORDER)) ; Fenetre sans barre de titre
SetWindowPos_(HwndStartER, 0, 0, 0, 0, 0, #SWP_NOSIZE|#SWP_NOMOVE|#SWP_SHOWWINDOW| #SWP_FRAMECHANGED) ; Fenetre sans barre de titre
SetWindowCallback(@myCallback(),#FormStartER)
InvalidateRect_(WindowID(#FormStartER),0, 1)
n = 1
While Trim(ListeLogicielsAutoriser(n, 1)) <> ""
NomIcone$ = StringField(DerniereOccurence(ListeLogicielsAutoriser(n, 1)), 1, ".")
ListeLogicielsAutoriser(n, 2) = Str(1000 + n)
Extraction = ExtractIcon_(0, ListeLogicielsAutoriser(n, 1), 0)
ButtonImageGadget(1000 + n, 25, 10 + (n * 70), 36, 36, Extraction)
dx = 0 : dy = 0
; Deplacement boutons
; *******************
Repeat
ResizeGadget(1000 + n, x - dx, (y + (n * 70)) - dy,#PB_Ignore, #PB_Ignore )
Delay(1)
RedrawWindow_(WindowID(#FormStartER), 0, 0, #RDW_INVALIDATE|#RDW_UPDATENOW)
Delay(10)
If dx < x - 20
dx + 20
EndIf
If dy < y
dy + 20
EndIf
Until dy >= y And dx >= x - 20
TextGadget(2000 + n, 20, 40 + (n * 70), 80, 18, NomIcone$,#PB_Text_Center|#PB_Text_Border)
SetGadgetColor(2000 + n, #PB_Gadget_BackColor, RGB(0,0,0))
SetGadgetColor(2000 + n, #PB_Gadget_FrontColor, RGB(255,255,255))
n + 1
Wend
Repeat
Evenement = WaitWindowEvent()
Until Evenement = #PB_Event_CloseWindow
Bonne soirée