AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CreateDialogParam mit mehreren Instanzen

CreateDialogParam mit mehreren Instanzen

Ein Thema von jaenicke · begonnen am 7. Mär 2015 · letzter Beitrag vom 8. Mär 2015
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.506 Beiträge
 
Delphi 10.4 Sydney
 
#1

CreateDialogParam mit mehreren Instanzen

  Alt 7. Mär 2015, 23:48
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
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: CreateDialogParam mit mehreren Instanzen

  Alt 7. Mär 2015, 23:59
In der Callback Funktion wird doch das Handle des Dialogs mit übergeben
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
damit weißt du doch welcher Dialog gerade schickt ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.506 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: CreateDialogParam mit mehreren Instanzen

  Alt 8. Mär 2015, 08:24
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.506 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: CreateDialogParam mit mehreren Instanzen

  Alt 8. Mär 2015, 15:13
Um die Frage selbst zu beantworten... Es genügt z.B. folgender Code:
Delphi-Quellcode:
  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 gespeichert und in der StdWndProc ausgelesen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf