in der Library-SDK habe ich ja bereits Informationen zu PB-internen Variablen wie z.B.
Code: Alles auswählen
_PB_2DDrawing_CurrentDC ; OS Current DC (HDC)
_PB_2DDrawing_CurrentColor ; Current RGB 24 color
_PB_2DDrawing_CurrentMode ; Current drawing mode (Set by DrawingMode())
_PB_2DDrawing_Brush ; Current brush (for flood fill), set by FrontColor() (HBRUSH)
_PB_2DDrawing_Pen ; Current pen (for outline color), set by FrontColor() (HPEN)
In dem tollen CreateGadget-Code von hallodri und ts-soft habe ich auch schon mal Beispiele gefunden dass man damit arbeiten kann.
[EDIT:] Habe hallodris Namen korrigiert. Ehre, wem Ehre gebührt !!!

Nur: Ich habe nicht ganz verstanden - WIE !?!
Geht dies nur mit Assembler Befehlen und wenn ja, was bedeutet z.B.
Code: Alles auswählen
!EXTRN _PB_Object_GetThreadMemory@4
!EXTRN _PB_Gadget_Globals
!MOV Eax,[_PB_Gadget_Globals]
!push eax
!call _PB_Object_GetThreadMemory@4
!MOV Eax,[Eax]
2. !push wird wohl zum pushen auf den Stack sein
3. bei !call bin ich mir nicht so ganz sicher, vermutlich ja zurückholen von Stack
4. aber was genau macht !EXTRN und
5. wo genau liegt der Unterschied zwischen Eax und [Eax]
6. und was genau ist Eax nochmal (war das nicht irgenwie der Rückgabewert .... aber wohin)?
So mal als Beispiel:
Ich würde gerne eine Procedur schreiben, die mir ausgibt ob ein Screen geöffnet ist oder nicht.
Eine solche Funktion hat PB ja meines Wissens nach (momentan noch) nicht.
Hierzu müsste ich ja vermutlich _PB_DirectX_CurrentDC oder z.B. auch einfach _PB_DirectX_ScreenWidth abfragen.
Wie müsste dann z.B. eine solche Prozedur aussehen?
Meine eigenen Versuche wie z.B.
Code: Alles auswählen
Procedure IsScreen()
!EXTRN _PB_DirectX_ScreenWidth
!MOV Eax,[_PB_DirectX_ScreenWidth]
!MOV Eax,[Eax]
ProcedureReturn
EndProcedure
Vielen Dank schon mal und schöne Grüße,
The Rookie.