Seite 3 von 3
Verfasst: 21.02.2009 22:35
von ts-soft
Kaeru Gaman hat geschrieben:
das ist keine Begründung....
wieso sollte er nicht das Handle zurückgeben, er braucht doch keine ID im Sinne einer Nummer,
weil er keinen Index irgendeiner Objektliste braucht.
Doch, intern händelt PB das in einer Objektliste, siehe:
Code: Alles auswählen
RunProgram("notepad", #PB_Compiler_Home + "SDK\Object.h", "")
Verfasst: 21.02.2009 23:25
von Kaeru Gaman
*grübel*
... und dann macht PB noch eine extra indizierte Liste / Array auf, für jeden Objekttyp, von dem statische Instanzen erstellt werden.... (?)
Verfasst: 22.02.2009 00:44
von ts-soft
nein, die simplelist enhält die fixen ids oder die memorypointer, deshalb sind
hohe ids ja auch verboten, weil dann könnten sich ids und memorypointer
überschneiden. so hohe ids wird ja wohl keiner nehmen
so ungefähr, frag freak

Verfasst: 22.02.2009 01:36
von Kaeru Gaman
> so ungefähr, frag freak
sollte ich wohl thun...
soweit wie ich das jetzt nachvollziehen kann...
PB führt eine interne Objektliste für alle objekte, die enthält die Objektstrukturen.
auf diese wird mit den ObjektIDs = MemPointer verwiesen.
zusätzlich werden für jeden Objekttyp simplelists erstellt die die Beziehung
von Index (= ObjektNummer oder "fixe ID") und ObjektID herstellt.
Verfasst: 22.02.2009 01:56
von ts-soft
Du brauchst den Source zu diesen beiden Funktionen:
Code: Alles auswählen
M_PBFUNCTION void *PB_Object_GetOrAllocateID(PB_Object *Object, int ID);
M_PBFUNCTION void *PB_Object_GetObject (PB_Object *Object, int DynamicOrArrayID);
Glaube aber nicht, das Du den bekommen kannst

Verfasst: 22.02.2009 02:21
von Kaeru Gaman
ich brauche keinen Source, nur eine saubere Aussage über die Funktionalität.
mich ärgert einfach, dass ich ungenaue Informationen abgespeichert hatte.
... außerdem muss doch die ObjektID etwas mit dem Handle zu tun haben,
schließlich kann man API-seitig GadgetID(Nr) als *hWnd benutzen...
das war mit die Ursache, warum ich davon ausgegangen bin, dass es das Handle ist.
Verfasst: 22.02.2009 02:27
von ts-soft
Code: Alles auswählen
hWnd = OpenWindow(0, ...)
ID = OpenWindow(#PB_Any, ...)
hWnd = WindowID(ID)
Hatten wir aber alles schon

Verfasst: 22.02.2009 11:26
von cxAlex