Screen manipulation aus der DLL

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
spacewalker
Beiträge: 48
Registriert: 15.07.2005 15:22
Wohnort: Stuttgart

Screen manipulation aus der DLL

Beitrag von spacewalker »

Tag !
Hat jemand eine Idee, wie man von einer DLL aus den, im Hauptprogramm geöffneten, Screen manipulieren könte (Zeichnen, Sprites anzeigen usw.) ? Irgendwie ist das beste, was ich erreicht habe,
das "nicht abstuerzen" des Hauptprogramms :lol:
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Ich stand vor der selben frage, ich habs dann so gelöscht:

Hauptprogramm welches die DLL ausführt:
für jeden Screen-Befehle eine extra Prozedur
jeden Pointer auf die Prozeduren in eine Struktur gespeichert
DLL laden
der DLL diese Struktur übermittelt (die unten erwähnte Prozedur aufrufen)


DLL-Programm:
Prozedur, welche als Parameter einen Strukturpointer erwartet, genau den selben, in welche oben die Pointer gespeichert wurden
Prozedur speichert den Inhalt der übergebenen Struktur in einer Globalen Variable (diese Variable ist nur in der DLL)


Jetzt kann man mit CallFunctionFast() und dem entsprechenden Pointer die Screen-Befehle ausführen. ... allerdings wird dabei natürlich immer eine Prozedur angesprungen, wodurch es nicht ganz so schnell ist, aber im in der regel sollte das locker ausreichen :D

Oder gibs bessere möglichkeiten?

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
spacewalker
Beiträge: 48
Registriert: 15.07.2005 15:22
Wohnort: Stuttgart

Beitrag von spacewalker »

PMV hat geschrieben: Jetzt kann man mit CallFunctionFast() und dem entsprechenden Pointer die Screen-Befehle ausführen. ... allerdings wird dabei natürlich immer eine Prozedur angesprungen, wodurch es nicht ganz so schnell ist, aber im in der regel sollte das locker ausreichen :D
Langsamer, als auf eine Image zu Zeichnen und Pointer and das HP zu übergeben wird das wohl kaum sein :)

Danke, ich werde es ausprobieren! :allright:
Antworten