Fluid Byte hat geschrieben:... was meinst du mit Ausgabekanal?
Ist "Ausgabekanal" nicht der deutsche Begriff für einen DC?
(Ok, hätte vielleicht doch besser bei der englischen Abkürzung bleiben sollen.

)
Fluid Byte hat geschrieben:Außerdem funktioniert diese Assembler Spielerei nur bei bereits geöffnetem Screen.
Dass das zuvor genannte Beispiel nur mit bereits geöffneten Screen funktioniert ist natürlich schon klar - war ja auch nur ein Beispiel von vielen.
Sachen wie:
Code: Alles auswählen
Procedure DrawingDC()
!extrn _PB_2DDrawing_GlobalStructure
!MOV EAX,[_PB_2DDrawing_GlobalStructure]
ProcedureReturn
EndProcedure
greifen dann halt entsprechend auf einen vorhandenen DC zu (oder nicht?

).
Fluid Byte hat geschrieben:Kannst du mal präzisieren was genau für Angaben du haben willst ...
Ok, ich beschreibe mal kurz wofür ich's brauche:
Hier im Forum fragte vor ein paar Tagen jemand nach 2D-Funktionen mit Antialiasing.
Ich hatte vor einiger Zeit mal diverse solcher Routinen für eigene Zwecke geschrieben. Da nun also mal nach sowas gefragt wurde wollte ich sie öffentlich machen - und dann natürlich möglichst für alle PB-User anwendbar - also plattformübergreifend.
Für den Eigenbedarf ist der Aufbau und die Anwendung dieses Routinen momentan ausreichend - für die Allgemeinheit (und gerade für Anfängeer) aber wohl nicht einfach und narrensicher genug in der Anwendung.
Aus diesem Grunde stelle ich sie gerade nochmal um - unter anderem eben auch komplett auf Multi-OS-Tauglichkeit.
Zum Ablauf:
Um möglichst schnell zu sein und diverse Parameter nicht in jeder einzelnen Routine abfragen zu müssen, benutze ich eine "INI-Routine" die im Grunde die Umgebungswerte für meine Routinen erstellt.
Diese INI-Routine muss also vom User vor den anderen Routinen aufgerufen werden und sammelt diverse Informationen über den aktuellen Zustand - also z.B.:
- existiert schon ein DC (wurde also bereits vom User StartDrawing() aufgerufen)
- Wenn ja:
... - wo befindet sich sein Buffer
... - welches Pixelformat hat er
und eben auch
... - welche Höhe und Breite hat der DC.
- Für die erste Abfrage ob ein DC besteht kann ich o.g. Assemblercode nehmen (es gibt ja dafür keinen entsprechenden PB-Befehl).
- für die 2. und 3. Abfrage kann ich PB-Befehle nehmen.
- für Höhe und Breite habe ich momentan allerdings noch keine plattformübergreifende Lösung gefunden.
Deine WinAPI-Lösung hilft mir da natürlich schon mal sehr für Windows weiter - was plattformübergreifendes kann ich damit aber leider vergessen.
Daher also meine Frage, ob man nicht auch diese Infos irgendwo aus PB herauskitzeln kann - denn vorhanden sein müssten sie ja irgendwo.
Für folgende Dinge habe ich bereits passende Assembler-Routinen - kann damit also diese Infos direkt aus PB abrufen:
Diverse Assemblerroutinen hat geschrieben:- IsScreen()
- IsScreenBuffer()
- ScreenWidth()
- ScreenHeight()
- ScreenDepth()
- DrawingDC()
- GetCurrentBuffer()
- GetPixelFormat()
Für Höhe und Breite des DC's fehlen sie mir allerdings noch.