Seite 1 von 2

SetWindowData()

Verfasst: 01.08.2007 14:59
von a14xerus
Gibt es so etwas wie SetWindowData() (als Gegenstück zu SetGadgetData())?

Verfasst: 01.08.2007 15:01
von edel
Noe , aber man kann es leicht selber coden. Fragt sich nur fuer welches OS.

Verfasst: 01.08.2007 15:02
von a14xerus
Windows (XP)
..
Wie kann man sowas denn selber coden?
Ich meine eigentlich kann ich ja auch eine Variable oder LL nehmen, aber ich würde halt gerne direkt mit dem Fenster "verknüpft" einen Long Wert abspeichern

Verfasst: 01.08.2007 15:08
von ts-soft

Code: Alles auswählen

SetProp_(hWnd, "MeinLong", 100)
a = GetProp_(hWnd, "MeinLong")
RemoveProp_(hWnd, "MeinLong")

Verfasst: 01.08.2007 15:09
von a14xerus
Danke

Verfasst: 01.08.2007 15:13
von Kiffi
Auch von mir: Danke! :allright:

Sowas habe ich schon lange gesucht.

Grüße ... Kiffi

Verfasst: 01.08.2007 15:18
von ts-soft
Sowas solltet Ihr aber schon gesehen haben :wink:
So kann man simple Subclassen:

Code: Alles auswählen

EnableExplicit

Procedure SubClassWindow(hWnd.l, *ProcAddress)
  SetProp_(hWnd, "handler", SetWindowLong_(hWnd, #GWL_WNDPROC, *ProcAddress))
EndProcedure

Procedure UnSubClassWindow(hWnd.l)
  SetWindowLong_(hWnd, #GWL_WNDPROC, GetProp_(hwnd, "handler"))
  RemoveProp_(hWnd, "handler")
EndProcedure

Procedure MyCallBack(hWnd.l, uMsg.l, wParam.l, lParam.l)

  Select uMsg
    Case #WM_LBUTTONDBLCLK : Debug "LBUTTONDBLCLK"
    Case #WM_MBUTTONDBLCLK : Debug "MBUTTONDBLCLK"
    Case #WM_RBUTTONDBLCLK : Debug "RBUTTONDBLCLK"
  EndSelect
  
  ProcedureReturn CallWindowProc_(GetProp_(hWnd, "handler"), hwnd, uMsg, wParam, lParam)
EndProcedure

If OpenWindow(0, 200, 200, 200, 200, "") And CreateGadgetList(WindowID(0))
  ButtonGadget(0,10,10,180,180,"test")
  SubClassWindow(GadgetID(0), @MyCallBack())
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      UnSubClassWindow(GadgetID(0))
      Break
  EndSelect
ForEver


Verfasst: 01.08.2007 15:21
von Kiffi
ts-soft hat geschrieben:Sowas solltet Ihr aber schon gesehen haben :wink:
nöh, man kann ja nicht alles gesehen haben. ;-)

Grüße ... Kiffi

Verfasst: 01.08.2007 15:24
von a14xerus
Kiffi hat geschrieben:
ts-soft hat geschrieben:Sowas solltet Ihr aber schon gesehen haben :wink:
nöh, ...
Ich auch noch nicht ;)
Aba jetzt schon und direkt mal abgespecihert...:)

Verfasst: 01.08.2007 15:29
von ts-soft
Der Platz ist dort aber eingeschränkt, aber PB speichert dort wohl nichts, oder wenig :wink:
Ansonsten:

Code: Alles auswählen

SetWindowLong_(hWnd, #GWL_USERDATA, value)
Problematisch unter 9x und evtl. bei mehreren Fenstern.