Guten Morgen allerseits,
vielleicht ist ja jemand hier, der sich mit der Windows
API ein wenig besser als ich auskennt und mir helfen kann. Hier die Eingangsgrößen:
- Delphi 2010
- normale Ressourcen-
DLL mit etlichen Dialogfeldern
Es geht um folgendes:
Aus einer
DLL will ich eine Dialogressource laden und anzeigen. Das funktioniert soweit mittels CreateDialogIndirectParam (FindResource, LoadResource, LockResource etc) recht gut. Ursprünglich hatte ich CreateDialog verwendet, doch einige Dialogfelder, die mit dem Stil WS_CHILD definiert waren (als Tabs gedacht), wurden nicht angezeigt. Das hab ich inzwischen durch Änderung des Dialogstils soweit erfolgreich verändert. Dummerweise gibt's aber noch weitere Dialogfelder, die nicht angezeigt werden. Diese Dialogfelder enthalten vom Hersteller definierte Custom Controls (in aller Regel statische Controls), deren Fensterklassen auf meinem Rechner logischerweise nicht existieren und daher auch nicht registriert sind. So weit, so gut.
Nun habe ich zum Ausprobieren eine der selbstdefinierten Fensterklassen definiert - quasi als Fake - und mit RegisterClassEx auch erfolgreich registriert (das sagt mir zumindest eine Prüfung mittels GetClassInfoEx. Auch GetLastError ist brav und gibt mir immer nur die gewünschte Null, d.h. kein Fehler, zurück, so daß eigentlich alles bestens sein sollte. Ist es aber nicht, denn die betreffenden Dialogfelder bleiben immer noch im Nirwana meines Rechners verborgen.
Hat dazu vielleicht jemand eine Idee? Das wäre toll. Das
Handle, das von CreateDialogIndirectParam zurückgeliefert wird, hat in diesen Fällen den Wert 0, was auf einen Fehler hindeutet, ein anschließender Aufruf von GetLastError liefert allerdings ebenfalls den Wert 0, was darauf hinweist, daß es eben keinen Fehler gab. In den Tiefen des Internet hab ich zu diesem Widerspruch leider nichts gefunden.
Wozu das Ganze? Ich will die Dialogfelder ohne weitere Funktion anzeigen können, damit man Position und Darstellung der Control-Texte eines solchen Dialogfeldes prüfen kann, ohne dabei lang in der betreffenden Applikation zur Laufzeit nach dem Dialogfeld und der Situation, in der es geöffnet werden kann, suchen zu müssen.
Vielen Dank schon mal vorab.
Viele Grüße
Franz