Page 1 sur 1

combobox et callback

Publié : sam. 30/avr./2011 20:52
par toad31
Bonjour,

j'ai un soucis avec ma callback, lorsque j'active une combobox, ma callback ne voit plus les messages clavier. Je voudrais savoir si il y a un moyen de réactiver le clavier.

Merci d'avance.

----------------------------------

Exemple de code:

Code : Tout sélectionner

#Combo = 0
#Text = 1
Procedure.l Callback(Window, Message, wParam, lParam)
  result = #PB_ProcessPureBasicEvents
    If Message = #WM_COMMAND 
         If (wParam>>16) = #CBN_KILLFOCUS And lParam = GadgetID(#Combo)
                Debug "Gadget lost focus"
        ElseIf (wParam>>16) = #CBN_SELENDOK  And lParam = GadgetID(#Combo)
                ans.s =  GetGadgetText(#Combo)
                Debug ans
        ElseIf (wParam>>16) = #CBN_SETFOCUS And lParam = GadgetID(#Combo)
              Debug "Gadget has focus"
        EndIf
    EndIf
    If message = 256
      Debug "clavier"
    EndIf
ProcedureReturn result
EndProcedure

If OpenWindow(0, 0, 0, 400, 100, "ComboBox focus", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    SetWindowCallback(@Callback())
    ComboBoxGadget(#Combo, 10, 10, 380, 300)
    AddGadgetItem(#Combo, -1, "Item Number 0")
    AddGadgetItem(#Combo, -1, "Item Number 1")
    AddGadgetItem(#Combo, -1, "Item Number 2")
    AddGadgetItem(#Combo, -1, "Item Number 3")
    StringGadget(#Text, 10, 40, 380, 20, "")
   Repeat
     Event = WaitWindowEvent()
   Until Event = #PB_Event_CloseWindow
EndIf
End

Re: combobox et callback

Publié : sam. 30/avr./2011 21:24
par Chris
Pour commencer, merci de mettre tes codes dans les balise.

If Message = 256

T'as pas une constante qui serait plus parlante que ce nombre?
Ton "256", tu l'as pas sorti de nulle part.

Re: combobox et callback

Publié : dim. 01/mai/2011 8:54
par toad31
c'est le message qui indique que j'ai enfoncé une touche du clavier. #WM_CHAR si tu veux.

------------------------------

Code : Tout sélectionner

#Combo = 0
#Text = 1
Procedure.l Callback(Window, Message, wParam, lParam)
result = #PB_ProcessPureBasicEvents
If Message = #WM_COMMAND
If (wParam>>16) = #CBN_KILLFOCUS And lParam = GadgetID(#Combo)
Debug "Gadget lost focus"
ElseIf (wParam>>16) = #CBN_SELENDOK And lParam = GadgetID(#Combo)
ans.s = GetGadgetText(#Combo)
Debug ans
ElseIf (wParam>>16) = #CBN_SETFOCUS And lParam = GadgetID(#Combo)
Debug "Gadget has focus"
EndIf
EndIf
If message = #WM_CHAR
Debug "clavier"
EndIf
ProcedureReturn result
EndProcedure

If OpenWindow(0, 0, 0, 400, 100, "ComboBox focus", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowCallback(@Callback())
ComboBoxGadget(#Combo, 10, 10, 380, 300)
AddGadgetItem(#Combo, -1, "Item Number 0")
AddGadgetItem(#Combo, -1, "Item Number 1")
AddGadgetItem(#Combo, -1, "Item Number 2")
AddGadgetItem(#Combo, -1, "Item Number 3")
StringGadget(#Text, 10, 40, 380, 20, "")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
End

Re: combobox et callback

Publié : dim. 01/mai/2011 13:31
par zaphod
...

Re: combobox et callback

Publié : dim. 01/mai/2011 15:53
par toad31
bah disons que je voudrais que l'evenement clavier soit géré dans la callback...
mais je pense avoir trouver,c est sans doute parce que la combobox a été crée dans la fenetre.

Re: combobox et callback

Publié : lun. 02/mai/2011 12:14
par toad31
j'ai trouvé une solution pour ceux que ca interesse. On peut remettre le focus sur la fenêtre principale avec SetFocus_().
Exemple SetFocus_(WindowID(0)) si "0" numero de la fenêtre.

Re: combobox et callback

Publié : dim. 08/mai/2011 14:45
par nico
toad31 a écrit :bah disons que je voudrais que l'evenement clavier soit géré dans la callback...
mais je pense avoir trouver,c est sans doute parce que la combobox a été crée dans la fenetre.
Dans ce cas, il faut subclasser le controle et non la fenetre et encore je crois au il y a un edit a l interieur du combobox, il faut essayer.

desole pour les accents mais je tape depuis un clavier grec, et donc oui je suis en grece.

Re: combobox et callback

Publié : dim. 08/mai/2011 14:46
par Backup
nico a écrit :
desole pour les accents mais je tape depuis un clavier grec, et donc oui je suis en grece.
ben fais gaffe a tes arrieres , ils ont pas bonne reputation les grecs :lol:

Re: combobox et callback

Publié : dim. 08/mai/2011 18:35
par nico
oui je m assoie que sur des chaises avec dossier,on ne sais jamais. :D