Création de gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Création de gadget

Message par Dorian »

Bonjour

Es-ce que quelqu'u pourrait m'expliquer comment créer un gadget ainsi que ce qui va avec svp ? (un truc simple du style bouton ou editbox)

Merci d'avance
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Re: Création de gadget

Message par brossden »

Il y a des exemples dans PureBasic et ici même les tutoriels sont trés bien fait donc ....
Mais pour te faire plaisir un petit programme d'exemple :

Code : Tout sélectionner


Enumeration
  #Fenetre
  #Bouton
  #Chaine
EndEnumeration

Procedure OuvreFenetre()
  If OpenWindow(#Fenetre, 470, 102, 387, 194,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Titre de la fenêtre")
    If CreateGadgetList(WindowID())
;--------------------------------------------------------------------

      ButtonGadget(#Bouton, 150, 80, 80, 30, "Bouton")

;--------------------------------------------------------------------
      StringGadget(#Chaine, 40, 40, 300, 20, "Chaine de caractères")
    EndIf
  EndIf
EndProcedure

Global Compteur
OuvreFenetre()

Repeat
  Evenement = WaitWindowEvent()
  GadgetNum = EventGadgetID() 
 
  If Evenement = #PB_EventGadget
    If GadgetNum = #Bouton
      Compteur + 1
      SetGadgetText(#Chaine,"Vous avez appuyer sur le bouton " + Str(Compteur)+ " fois")
    EndIf
  EndIf
Until Evenement = #PB_Event_CloseWindow
End




Si cela ne répond pas à ton attente soit un peu plus précis dans ta demande !!
Denis

Bonne Jounée à tous
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Merci mais sa je sais faire ^^.

Ce que je chercher c'est créer un nouveau gadget pas afficher un déjà éxistant
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message par CameleonTH »

Je vois ce que tu veut dire, en gros tu veut savoir comment on fait pour crée un nouveau stye de gadget comme dans tous les grand logiciel commerciale :D
Mias seule probléme c'est que je ne sais pas du tous comment on s'y prend, en espérant que quelqu'un le sache car cela m'interesserai aussi.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Oui c'est possible mais pour cela il faut créer une userlibrary en ASM, en C, ou avec Purebasic lui-même grâce à Tailbite.

Tout est déjà prévu pour créer un nouveau gadget ou un codec d'image.

Par exemple avec TailBite, une structure est donnée pour supportée toutes les fonctions purebasic classiques de gestion de gadgets :

Code : Tout sélectionner

Structure TB_GadgetVT
        FreeGadget.l
        GetGadgetState.l
        SetGadgetState.l
        GetGadgetText.l
        SetGadgetText.l
        AddGadgetItem.l
        AddGadgetItem2.l
        RemoveGadgetItem.l
        ClearGadgetItemList.l
        ResizeGadget.l
        CountGadgetItems.l
        GetGadgetItemState.l
        SetGadgetItemState.l
        GetGadgetItemText.l
        SetGadgetItemText.l
   EndStructure
Donc, pour l'instant le mieux à faire c'est de télécharger TailBite, et de lire la documentation fournie avec.
Pour l'instant, TailBite n'est réellement compatible qu'avec PB3.94. Il faudra attendre encore peu pour la v4.
Image
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Le cas classique est d'utiliser le Static Control pour en faire un HyperlinkGadget, en cherchant tu peux peut être trouver des exemples aux adresses connues.

Tiens justement un exemple:

Code : Tout sélectionner

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2955&highlight=
; Author: Andreas  (updated for PB3.92+ by Andre)
; Date: 29. November 2003

Global Static2.l 
Global ReUsableBrush,a.l 

Procedure IsMouseOver(wnd) 
    GetWindowRect_(wnd,re.RECT) 
    GetCursorPos_(pt.POINT) 
    Result = PtInRect_(re,pt\x,pt\y) 
    ProcedureReturn Result 
EndProcedure 

Procedure SetColor(TxtColor,BkColor,wParam ,lParam ) 
Shared ReUsableBrush 
    DeleteObject_(ReUsableBrush) 
    ReUsableBrush = GetStockObject_(#HOLLOW_BRUSH) 
    SetBkColor_(wParam,BkColor) 
    SetTextColor_(wParam,TxtColor) 
    SetBkMode_(wParam,#TRANSPARENT) 
    Result  =  ReUsableBrush 
    ProcedureReturn Result 
EndProcedure 

Procedure WindowCallback(WindowID, message, wParam, lParam) 
    Result = #PB_ProcessPureBasicEvents 
    Select message 
    Case #WM_LBUTTONUP 
        If IsMouseOver(Static2) 
            ShellExecute_(0,"open","http:\\www.ampsoft.org",0,0,#SW_SHOWNORMAL) 
        EndIf 
    Case   #WM_MOUSEMOVE 
        GetCursorPos_(pt.POINT) 
        GetWindowRect_(Static2,re.RECT) 
        If PtInRect_(re,pt\x,pt\y) 
            a = 1 
            SetWindowText_(Static2,"www.ampsoft.org") 
            SetCursor_(LoadCursor_(0,32649)) 
        Else 
            a = 0 
            SetWindowText_(Static2,"www.ampsoft.org") 
            SetCursor_(LoadCursor_(0,#IDC_ARROW)) 
        EndIf 
        InvalidateRect_(WindowID(),0,0) 
    Case #WM_CTLCOLORSTATIC 
        If lParam = Static2 
            If a 
                Result = SetColor(RGB(255,0,0),RGB(255,255,255),wParam,lParam) 
            Else 
                Result = SetColor(RGB(0,0,255),RGB(255,255,255),wParam,lParam) 
            EndIf 
        EndIf 
    EndSelect 
    ProcedureReturn Result 
EndProcedure 

If OpenWindow(0, 10, 150, 640,180, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "MouseOver") 
    If CreateGadgetList(WindowID()) 
        Static2 = TextGadget(0, 10,10,220,24,"") 
    EndIf 
    SetWindowCallback(@WindowCallback()) 
    SendMessage_(WindowID(),#WM_MOUSEMOVE,0,0) 
    Repeat 
        EventID.l = WaitWindowEvent() 
        If EventID = #PB_Event_CloseWindow 
            Quit = 1 
        EndIf 
    Until Quit = 1 
EndIf 
End
Répondre