Page 1 sur 1

Création de gadget.

Publié : lun. 23/févr./2009 12:15
par Anonyme
Tout est dans le titre , quelqu'un peut me mettre sur la voie pour la création de Gadget ? je suppose qu'il faut être calé avec les apis ( win32 / nux ) ?


Merci d'avance.

Publié : lun. 23/févr./2009 12:26
par Backup

Publié : lun. 23/févr./2009 12:35
par Progi1984

Publié : lun. 23/févr./2009 12:42
par Anonyme
Merci , je suis aller jeter un oeil sur codearchiv , j'y vais jamais , une petite mine d'or :oops:

http://www.purearea.net/pb/CodeArchiv/G ... rGadget.pb

Publié : lun. 23/févr./2009 14:12
par Anonyme
C'est aussi simple que ca :

Code : Tout sélectionner

; Gadget joli par Cpl.Bator :D
; PB4.3


Structure GadgetRect
  x.i
  y.i
EndStructure

Structure GadgetJolieArea
  Position.GadgetRect
  Size.GadgetRect
  CallBack.i
  Image.i
  Surface.i
EndStructure


Procedure JoliGadgetCallback(*G.GadgetJolieArea)
Static Scroll.f
Box(0,0,*G\Size\x,*G\Size\y,$BB8844) ; Fond 

Scroll + 0.05

If Scroll=>16
  Scroll = 0
EndIf 

; un damier...
For y = 0 To *G\Size\y Step 16
  For x = 0 To *G\Size\x Step 16
  
  a+1
  a%2
  If a=1
    Box(x-Scroll,y-Scroll,16,16,$AA7711)
   EndIf 
   
  Next 
Next 
EndProcedure

Procedure.i JoliGadget(x,y,Width,Height)
*JG.GadgetJolieArea = AllocateMemory(SizeOf(GadgetJolieArea))
*JG\Position\x = x 
*JG\Position\y = y
*JG\Size\x = Width
*JG\Size\y = Height
*JG\CallBack = @JoliGadgetCallback()
*JG\Image  = CreateImage(#PB_Any,Width,Height)
*JG\Surface = ImageGadget(#PB_Any,x,y,Width,Height,ImageID(*JG\Image),#PB_Image_Border)
ProcedureReturn  *JG
EndProcedure

Procedure RedrawJoliGadget(*G.GadgetJolieArea)
StartDrawing(ImageOutput(*G\Image))
CallFunctionFast(*G\CallBack,*G)
StopDrawing()
SetGadgetState(*G\Surface,ImageID(*G\Image))
EndProcedure


OpenWindow(0,0,0,800,600,"Test")


MonGadget =  JoliGadget(10,10,320,240)
MonGadget2 =  JoliGadget(340,10,320,240)



Repeat
event = WindowEvent()

RedrawJoliGadget(MonGadget)
RedrawJoliGadget(MonGadget2)

Until event = #PB_Event_CloseWindow

Je ne me suis jamais penché sur des application pur & dur.
Ca me donne pas mal d'idée , surtout que là c'est portable à 100%
Prochaine étape pour moi , me faire une jolie grille 2D zoomable et scrollable ! :D

Merci de m'avoir mis sur les rails les gars !

Publié : lun. 23/févr./2009 14:23
par Cls
Effectivement c'est hyper simple ! Je vais certainement me pencher la dessus quand j'aurais un peu plus de temps.

Merci Cpl.Bator pour ce p'tit code sympatoche ;)

Publié : lun. 23/févr./2009 14:29
par Geo Trouvpatou
Salut.

Ben c'est une question que je me posais depuis longtemps, mais moi dés que ça implique les pointeurs c'est déjà hors de portée.

Quand j'ai vu que même un Cpl.Bator ne savait pas faire ça, alors qu'il a fait une jolie bibliothèque comme "PureBasic Screen GUI", alors je me suis dit qu'il fallait être un grand gourou de l'ASM.

Apparemment pas tant que ça, même si j'sais pas trop à quoi peut bien servir ce beau gadget, sinon me faire avoir une crise d'épilepsie.

Ce qu'il y a bien depuis ces derniers temps c'est que l'on a de plus en plus d'adepte de la portabilité :lol: .

Bon ben maintenant je croise les doigts pour qu'il vienne l'envie à Cpl.Bator de faire une aussi jolie bibliothèque pour Le mode fenêtre graphique qu'il l'a fait avec "PureBasic Screen GUI".

Je suis sûr qu'elle aurait un immense succès :wink: .

Bye.

Publié : lun. 23/févr./2009 15:29
par jbernard13
c'est tres joli mais
un peu trop compliqué pour moi

Publié : mar. 24/févr./2009 3:28
par poshu
Dans l'idée, c'est pas mal, mais c'est loin d'être un véritable création de gadget. Je me suis déjà posé la question quand à l'intégration d'un gadget custom (surtout au niveau de la gestion des event) et j'avoue que j'ai pas trouvé de solution... J'vais aller voir vos liens, au cas où.

Publié : mar. 24/févr./2009 7:31
par Progi1984
Regarde mon lien, ca intégre un gadget au niveau des commandes PB. Mais je sais plus pour les events !

Publié : mar. 24/févr./2009 9:21
par Anonyme
Progi1984 , le problème c'est que c'est pas portable.

Publié : mar. 24/févr./2009 10:17
par Progi1984
A l'heure actuelle :), je vais voir ce que je peux faire :)