Basic Univers
; Autor : Nico

; Message de Dr. Dri
;   Pour compléter l'exemple de nico je suggère de définir le numéro de message avec
; RegisterWindowMessage_() pour éviter tout conflit possible ^^


; Réponse de Nico
;   RegisterWindowMessage_() n'est nécessaire que lorque l'on envoie le message à
; plusieurs processus et ainsi garantir une valeur de message unique
; sinon il faut simplement que la valeur du message soit supérieur à #WM_USER soit 1024.


#Mon_Message = 1025
Global Fin.l

Procedure.l Thread(Window.l)
  Static a
  Repeat
      a = a + 1
      SendMessage_(Window, #Mon_Message, a, 0)
      Delay(1000)
  Until Fin = 1
EndProcedure


ProcedureDLL.l Information(Window.l)
    CreateThread(@Thread(), Window.l)
EndProcedure

ProcedureDLL.l Fin_Information()
    Fin = 1
EndProcedure

Procedure Callback(WindowID, Message, wParam, lParam)
  Resultat = #PB_ProcessPureBasicEvents
  Select Message
      Case #Mon_Message
          SetGadgetText(0, Str(wParam))
     
  EndSelect
  ProcedureReturn Resultat
EndProcedure

If OpenWindow(0, 0, 0, 220, 200, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  SetWindowCallback(@Callback())
  
  CreateGadgetList(WindowID(0))
  TextGadget(0, 10, 10, 200, 20, "", #PB_Text_Border)
  ButtonGadget(1, 10, 40, 200, 20, "Recevoir des informations")
  
  
  Repeat
    Select WaitWindowEvent()
        Case #PB_Event_Gadget
            Select EventGadget()
                Case 1
                    Information(WindowID(0))
                   
            EndSelect
           
        Case #PB_Event_CloseWindow
            Quit = 1
    EndSelect
  Until quit = 1
  Fin_Information()
EndIf