![]() |
CreateDialogParam mit mehreren Instanzen
Hallo,
ich verstehe aktuell nicht wie CreateDialogParam mit mehreren Instanzen funktioniert. Denn ich kann nur eine einfache Funktion als DialogProc übergeben. Einen Verweis auf die aktuelle Instanz oder so etwas sehe ich dort nicht. Eine Möglichkeit wäre jeweils Speicherplatz zu reservieren, dort einen Befehl zu hinterlegen, der die Instanz auf den Stack oder in ein Register packt. So hätte ich für jede Instanz eine eigene Einsprungstelle und in der Funktion die Instanz. Schön finde ich die Lösung allerdings nicht. Hat jemand vielleicht eine andere Lösung? Vielen Dank und schönen Gruß, Sebastian Jänicke |
AW: CreateDialogParam mit mehreren Instanzen
In der Callback Funktion wird doch das Handle des Dialogs mit übergeben
![]() damit weißt du doch welcher Dialog gerade schickt ... :gruebel: |
AW: CreateDialogParam mit mehreren Instanzen
Schon, aber das heißt ja, dass ich bei jeder Message die Fensterinstanz suchen muss. Bei der Vielzahl an Messages, die ankommen, dauert das vergleichsweise lange, zumal ich den Zugriff auf die Fensterverwaltung auch noch threadsicher gestalten muss...
Ich habe auch gerade mal geschaut wie Delphi selbst das macht, dort passiert das wie ich es beschrieben habe mit einem eigenen Speicherbereich. Ich denke mal das werde ich dann auch so machen... vielleicht kann ich die vorhandenen Funktionen ja auch selbst nutzen. |
AW: CreateDialogParam mit mehreren Instanzen
Um die Frage selbst zu beantworten... Es genügt z.B. folgender Code:
Delphi-Quellcode:
MakeObjectInstance ist hier das Entscheidende. Diese Funktion sorgt dafür dass die Methode im Kontext des korrekten Objekts ausgeführt wird. Dafür wird die Instanz gespeichert und in der StdWndProc ausgelesen.
FHandle := CreateDialogParam(hInstance, MAKEINTRESOURCE(AResource), 0, MakeObjectInstance(NonVclDialogProc), 0);
// AResource ist die Nummer der Dialogressource |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz