Hi hallodri,
vielen Dank !!!
Hatte nicht zu hoffen gewagt dass es so einfach ist.
Ich habs jetzt für's erste mal in ein paar Prozeduren angewand.
Für den, den's interessiert anbei also mal ein paar Prozeduren die einem zusätzliche Screen-Informationen liefern, welche man von Pure ja sonst nicht bekommt:
Code: Alles auswählen
; IsScreen() - liefert einen Wert <> 0, wenn ein Screen geöffnet ist.
; IsScreenDrawing() - liefert einen Wert <> 0, wenn die Ausgabe (StartDrawing()) auf den Ausgabekanal des Screens gerichtet ist.
;
; ScreenWidth() - liefert die Breite des Screens (z.Zt. nur PB 3.94)
; ScreenHeight() - liefert die Höhe des Screens (z.Zt. nur PB 3.94)
; ScreenDepth() - liefert die Bittiefe des Screens (z.Zt. nur PB 3.94)
;
; ACHTUNG! die letzten drei Prozeduren liefern auch noch die Werte des Screens, wenn dieser bereits wieder geschlossen wurde !!!
Procedure IsScreen()
!EXTRN _PB_DirectX_PrimaryBuffer
!MOV Eax,[_PB_DirectX_PrimaryBuffer]
ProcedureReturn
InitSprite() ; Dummycall, to make sure, that the needed Library will be included
EndProcedure
Procedure IsScreenDrawing()
!EXTRN _PB_DirectX_CurrentDC
!MOV Eax,[_PB_DirectX_CurrentDC]
ProcedureReturn
InitSprite() ; Dummycall, to make sure, that the needed Library will be included
EndProcedure
Procedure ScreenWidth()
!EXTRN _PB_DirectX_ScreenWidth
!MOV Eax,[_PB_DirectX_ScreenWidth]
ProcedureReturn
InitSprite() ; Dummycall, to make sure, that the needed Library will be included
EndProcedure
Procedure ScreenHeight()
!EXTRN _PB_DirectX_ScreenHeight
!MOV Eax,[_PB_DirectX_ScreenHeight]
ProcedureReturn
InitSprite() ; Dummycall, to make sure, that the needed Library will be included
EndProcedure
Procedure ScreenDepth()
!EXTRN _PB_DirectX_ScreenDepth
!MOV Eax,[_PB_DirectX_ScreenDepth]
ProcedureReturn
InitSprite() ; Dummycall, to make sure, that the needed Library will be included
EndProcedure
;########### kleiner Demo-Code #########
Debug "----- Programstart ----------"
Debug "IsScreen : "+Str(IsScreen())
Debug "IsScreenDrawing : "+Str(IsScreenDrawing())
Debug ""
Debug "----- InitSprite ----------"
InitSprite()
Debug "IsScreen : "+Str(IsScreen())
Debug "IsScreenDrawing : "+Str(IsScreenDrawing())
Debug ""
Debug "----- OpenScreen ----------"
OpenScreen(640,480,16,"jkhg")
Debug "IsScreen : "+Str(IsScreen())
Debug "IsScreenDrawing : "+Str(IsScreenDrawing())
Debug ""
Debug "----- StartDrawing ----------"
StartDrawing(ScreenOutput())
Debug "IsScreen : "+Str(IsScreen())
Debug "IsScreenDrawing : "+Str(IsScreenDrawing())
Debug ""
Debug "----- StopDrawing ----------"
StopDrawing()
Debug "IsScreen : "+Str(IsScreen())
Debug "IsScreenDrawing : "+Str(IsScreenDrawing())
Debug ""
Debug "----- CloseScreen ----------"
CloseScreen()
Debug "IsScreen : "+Str(IsScreen())
Debug "IsScreenDrawing : "+Str(IsScreenDrawing())
Debug ""
Debug "ScreenWidth : "+Str(ScreenWidth())
Debug "ScreenHeight : "+Str(ScreenHeight())
Debug "ScreenDepth : "+Str(ScreenDepth())
End
(Das man InitSprite()-Dummy nicht in jeder Prozedur benötige ist mir natürlich klar. Hab's nur für den Fall drin, dass jemand die Prozeduren einzeln verwenden möchte.)
Leider scheint sich aber bei PB4 im Gegensatz zu 3.94 da was mit den Variablen oder bei der Sprite-Library geändert zu haben.
Denn wärend o.g. Code in 3.94 problemlos läuft kennt PB4 scheinbar die Variablen
_PB_DirectX_ScreenWidth ,
_PB_DirectX_ScreenHeight und
_PB_DirectX_ScreenDepth nicht und bringt einen '3 unresolved externals' Error.
Hat zufällig schon jemand gerauere Informationen darüber, was sich diesbezüglich bei PB4 geändert hat?
Gibt's eventuell schon irgenwo eine neuere
'PureBasic library descriptor.txt' ?
ThanX und Gruß,
The Rookie.