WM_INITDIALOG einer Komponente abfangen
-
Wie willst du eine Message abfangen, die überhaupt nicht (an deine Komponenten) verschickt wird?
-
arbeiter schrieb:
Ich denke diese Nachricht kriegst du nicht wenn du mit der VCL arbeitest. Kriegst du nur wenn du mit den WinAPI Funktionen CreateDialog oder DialogBox arbeitest.
Is das denn so richtig??? Ich denke nicht, Tim!
Sach doch mal einer mit Ahnung was dazu...
Ich dachte immer die VCL wäre nur ein Wrapper und die WndProc trotzdem (oder gerade desswegen) verfügbar (zumindest nutze ich die ganz erfolgreich
).
-
Ne, die VCL wrappt die Dialoge die man mit CreateDialog/DialogBox erstellen kann nicht.
Ich hab recht. 100%.
-
Also du kannst schon alle Nachrichten abfangen...aber die WM_INITDIALOG ist halt nur für Dialoge und eine TForm kriegt diese Nachricht überhaupt nicht!!
-
Auch nicht, wenn das Formular vom Typ Dialog ist???
-
arbeitest du ueberhaupt mit dialog-boxen? wenn nein warum willst du diese message abfangen? was willst du erreichen?
-
Ich möchte eine Komponente (beispielsweise ein Panel) transparent erscheinen lassen. Das geht bei Fenstern mit SetWindowLong(...) und SetLayeredWindowAttributes(...).
Bei Komponenten im C++ Builder ist dies so leider nicht möglich. Unter MSDN habe ich gelesen, dass man die WM_INITDIALOG abfangen und dann wie oben bei den Fenstern vorgehen muss.
Ich brauche die WM_INITDIALOG- Nachricht also nur, um diese Transparenz zu erreichen, oder gibt es noch eine andere Methode, um die Komponenten transparent erscheinen zu lassen???
Vielen Dank für eure Hilfe,
Euer Entertainer
-
Du kannst eh nur die ganze Form transparent machen und nicht einzelne Steuerelemente.
-
Aber ist nicht letztendlich jedes Steuerelement ein eigenes Fenster auf dem Hauptfenster? Kann man denn da wirklich nichts machen?
Vielen Dank,
Euer Entertainer
-
WS_EX_LAYERED
Windows 2000/XP: Creates a layered window. Note that this cannot be used for child windows. Also, this cannot be used if the window has a class style of either CS_OWNDC or CS_CLASSDC.