Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
8. Mär 2015
Um die Frage selbst zu beantworten... Es genügt z.B. folgender Code: FHandle := CreateDialogParam(hInstance, MAKEINTRESOURCE(AResource), 0, MakeObjectInstance(NonVclDialogProc), 0);
// AResource ist die Nummer der Dialogressource
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...
Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
8. Mär 2015
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....
Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
7. Mär 2015
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...