Seite 1 von 1

Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 22.04.2016 19:17
von funkheld
Hallo, guten Tag.

Wie kann ich im Fenster "test" die Daten empfangen von Postmessage bitte?

Hier werden die Daten gesendet:

Code: Alles auswählen

Global t.l

OpenWindow(0,100,100,100,100,"find", #PB_Window_SystemMenu)

t=FindWindow_(0,"test")
PostMessage_(t,$1000,100,200)

Repeat  
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = 0
        CloseWindow(0)
        Break
      EndIf
  EndSelect  
ForEver
Hiemit möchte ich sie empfangen, irgendwie mit lparam usw. Wie heißen diese Parameter bitte?
Und wie kann ich sie hier empfangen bitte , bzw überprüfen ob dieses Fenster Daten bekommt.

Code: Alles auswählen

OpenWindow(0,100,100,100,100,"test", #PB_Window_SystemMenu)

Repeat  
  Event = WaitWindowEvent()
  
  Select Event
        Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = 0
        CloseWindow(0)
        Break
      EndIf
  EndSelect  
ForEver

Re: Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 22.04.2016 19:22
von RSBasic

Re: Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 22.04.2016 20:07
von funkheld
Danke für die Hilfe.
Funktioniert wunderbar.

Was wird hiermit bitte ausgesagt:
Global MyMessage.l = RegisterWindowMessage_("MyOwnMessage")


Gruss

Re: Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 24.04.2016 15:07
von funkheld
Wer kann mir das bitte unten für einen Datenbereich der mit Allocate erstellt wurde umstellen

Wie kann man bitte einen Datenbereich (Allocate) übergeben mit Sendmessage:

Code: Alles auswählen

EnableExplicit

Define handle
Define Message.s
Define cd.COPYDATASTRUCT

handle=FindWindow_(#Null,"test")
If handle 
  Message.s="1234"
  
  cd\cbData = (Len(Message) + 1) * SizeOf(Character)
  cd\lpData = @Message
  
  SendMessage_(handle,#WM_COPYDATA,1,cd)
Else
  MessageRequester("","Programm nicht gefunden.",0)
EndIf
Und den Datenbereich hiermit wieder übernehmen:

Code: Alles auswählen

EnableExplicit

Procedure WindowCallback(WindowID,message,wParam,lParam)
  Protected result
  Protected *cd.COPYDATASTRUCT
  
  result = #PB_ProcessPureBasicEvents 
  If wParam=1
    *cd = lParam
    SetGadgetText(1,PeekS(*cd\lpData))
  EndIf 
  ProcedureReturn result
EndProcedure

If OpenWindow(0,0,0,500,250,"test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  EditorGadget(1,10,10,480,230,0)
  
  SetWindowCallback(@WindowCallback())
  
Repeat 

Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf

Danke.
Gruss

Re: Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 24.04.2016 15:12
von RSBasic
Dann wäre vielleicht der folgende Code nützlich: http://www.purebasic.fr/german/viewtopi ... =8&t=16659

Re: Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 24.04.2016 15:56
von funkheld
Danke für den Tip.

Gruss

Re: Daten von Postmessage empfangen.. wie geht das bitte?

Verfasst: 24.04.2016 17:12
von ts-soft
funkheld hat geschrieben:Da wird aber auch nur mit String gespielt.
Wo wird da mit String gespielt? Du solltest Dir den Code mal anschauen und versuchen zu verstehen.