SetWindowData()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Unter Windows gibt es einiges :

Window Extra Bytes
Window Userdata
oder,wie schon oben erwaehnt Property

Die beste Variante sind die Extra Bytes , soweit ich aber weiss
nur mit einem Hack fuer PB Fenster/gadgets moeglich.

Code: Alles auswählen

  setwindowlong_(hWnd,0,data)
  getwindowlong_(hWnd,0)
Userdata ist die einfachste Moeglichkeit, aber auf 4 Bytes beschraenkt.
Was aber in den meisten Faellen ausreichen sollte.

Code: Alles auswählen

  setwindowlong_(hWnd,#gwl_userdata,data)
  getwindowlong_(hWnd,#gwl_userdata)
Property sind eine art assoziatives Array, dadurch aber auch langsamer
und jeder kann sich die Liste anschauen, Schluessel wie etwa 'lala', sollte
man dann vermeiden, sofern man es unter das Volk bringt ;) .
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

MSDN sagt:
Before destroying a window (that is, before processing the WM_DESTROY message), an application must remove all entries it has added to the property list. The application must use the RemoveProp function to remove the entries.
geschieht dies automatisch wenn ein PB Programm endet ?
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> geschieht dies automatisch wenn ein PB Programm endet ?
nope
ts-soft hat geschrieben: Case #PB_Event_CloseWindow
UnSubClassWindow(GadgetID(0))
Break
Procedure UnSubClassWindow(hWnd.l)
SetWindowLong_(hWnd, #GWL_WNDPROC, GetProp_(hwnd, "handler"))
RemoveProp_(hWnd, "handler")
EndProcedure
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten