Seite 1 von 1
Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 20:06
von Bisonte
Kriegt man aus den ID's wieder die dazugehörigen PB_Nummern ?
Also aus der ImageID(Image) wieder das Image ?
Geht mir im allgemeinen um DLL - Programmierung :
wie z.B. kann ich auf ein Bild Zeichnen das das Hauptprogramm erstellt hat.
Wenn ich der DLL die Imagenummer übergebe klappt nix, also denke ich muss ich die ImageID()
"rüberbringen".
StartDrawing erwartet ja nun beim ImageOutput usw eine PB Nummer... keine ID.
Wie krieg ich das also hin, auf ein Image zu zeichnen von dem ich nur die ImageID habe.... ?
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 20:15
von ts-soft
Neues Bild erstellen, das alte draufzeichnen (mit der ImageID) und schon kannste drin rumwurschteln.
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 20:15
von STARGÅTE
Kriegt man aus den ID's wieder die dazugehörigen PB_Nummern?
Nein,
wenn das Image von PB wäre, könntest du ja deren Nummer selbst ermitteln,
und wenn es nicht von PB ist, hat es keine Nummer.
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 20:19
von Bisonte
@stargate: Das Bild wird ja mit PB gezeichnet, vom Hauptprogramm.
@ts: Ist das nicht ein Problem, weil ich das Originalbild ja nicht wieder loswerde ? (Memoryleak?)
und dann hätt ich ja wiederum das gleiche Problem andersherum, dass ich im Hauptprogramm dann wieder
ein Image habe ohne PB Nummer... und so stapelt sich das ganze... oder nicht ?
Edit: FreeImage() erwartet ja auch wieder eine PB Nummer....
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 20:52
von STARGÅTE
stargate: Das Bild wird ja mit PB gezeichnet, vom Hauptprogramm.
Na dann kannst du doch deren Nummer nutzen.
Verstehe irgendwie nicht warum du in der DLL mit der ID arbeitest.
Du übergibst der DLL ganz normal die ImageID, und zeichnest es in das in der DLL erstellte Image.
Das Hauptprogramm kann dein Image selber loswerden und die DLL auch.
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 20:53
von edel
Bisonte hat geschrieben:Wenn ich der DLL die Imagenummer übergebe klappt nix, also denke ich muss ich die ImageID()
"rüberbringen"
Das liegt daran das die DLL ihre eigene interne Liste hat, also dort auch nichts findet. Probier es mal mit #pb_any.
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 21:38
von Bisonte
@Stargate: Nochmal zum Verständnis: Das
Hauptprogramm hat ein Image mit CreateImage(0,110,25) erstellt und in
einer Prozedur innerhalb der DLL soll es bearbeitet werden, damit ich es im Hauptprogramm weiter verwenden kann.
Mit der Übergabe an die DLL-Procedure von der PB_Nummer hat es nicht geklappt.
Nur mit der ImageID ...
@edel:
Seltsamerweise funktioniert es wenn ich mit CreateImage(#PB_Any...) erstelle
So klappts. Aber ist das jetzt nur zufall, oder ist das normal ?
Und wieso gab es immer IMA (wegen weil Image not Initialized) bei CreateImage(0,....) ?
Fragen über Fragen ....

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 21:44
von STARGÅTE
Und wenn du die OutputID übergibst, dass müsste eigentlich funktionieren.
also ImageOutput(#Image) an die DLL übergeben und dort dann einfach in StartDrawing benutzen, wenn es wirklich nur ums "benutzen" geht.
Seltsamerweise funktioniert es wenn ich mit CreateImage(#PB_Any...) erstelle
So klappts. Aber ist das jetzt nur zufall, oder ist das normal ?
Und wieso gab es immer IMA (wegen weil Image not Initialized) bei CreateImage(0,....) ?
Fragen über Fragen ....
Vielleicht wäre es an der Zeit doch mal ein Code dazu zu posten ... damit wir dein Problem besser nachvollziehen können.
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 23:02
von Thorium
Bisonte hat geschrieben:
Seltsamerweise funktioniert es wenn ich mit CreateImage(#PB_Any...) erstelle
So klappts. Aber ist das jetzt nur zufall, oder ist das normal ?
Das ist normal und auch nicht seltsam, deswegen hat edel es ja vorgeschlagen.
PureBasic führt intern eine List der Nummern, DLL und EXE haben dabei getrennte listen. Die ID, welche mit PB_Any zurückgegeben wird gehöhrt nicht zur Liste, das ist einfach ein Memory Pointer und kann von daher von der DLL verwendet werden um auf die Image Struktur zuzugreifen.
Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?
Verfasst: 25.09.2011 23:10
von Bisonte
danke für die ausführliche Erklärung...
Ich denke das gleiche gilt für andere PB Nummern wie z.B Sounds, Windows usw die ebenfalls per #PB_ANY erstellt worden sind.