Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows API - Fensterklassen, Dialogressource und Custom Controls (https://www.delphipraxis.net/178282-windows-api-fensterklassen-dialogressource-und-custom-controls.html)

panch 30. Dez 2013 08:22

Windows API - Fensterklassen, Dialogressource und Custom Controls
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz