SetWindowData()

Anfängerfragen zum Programmieren mit PureBasic.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

SetWindowData()

Beitrag von a14xerus »

Gibt es so etwas wie SetWindowData() (als Gegenstück zu SetGadgetData())?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Noe , aber man kann es leicht selber coden. Fragt sich nur fuer welches OS.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

SetProp_(hWnd, "MeinLong", 100)
a = GetProp_(hWnd, "MeinLong")
RemoveProp_(hWnd, "MeinLong")
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Danke
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Auch von mir: Danke! :allright:

Sowas habe ich schon lange gesucht.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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...:)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten