Leider ist das Problem, was ich gestern
hier als gelöst bezeichnet hatte, doch noch nicht gelöst.
Es geht um das Ausblenden des Programms in der Taskleiste. Ich habe mittlerweile gelernt, dass man unter neueren Delphis einstellen kann, ob in der Taskleiste nun das Hauptfenster angezeigt wird, oder das (unsichtbare) Fenster von Application (ich hoffe, das ist so halbwegs richtig widergegeben).
Wenn man nun den Eintrag in der Taskleiste weghaben will, nimmt man diesen Code
Delphi-Quelltext
1: 2: 3: 4:
| ShowWindow(xHandle, SW_HIDE); SetWindowLong(xHandle, GWL_EXSTYLE, GetWindowLong(xHandle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); |
Da Application.Handle bei neueren Windows-Versionen schonmal Probleme mit dem kleinen Vorschau-Fenster hat, möchte ich MainForm.Handle nutzen.
Dabei bekomme ich aber mit den Windows7-Komponenten Probleme (diese Buttons, die man in das Vorschau-Fenster integrieren kann).
Erstens: Sobald ich SetWindowLong wie oben aufrufe, verschwinden die Buttons aus dem Vorschaufenster unter Windows7, auch wenn das Fenster noch sichtbar ist. Es ist möglich, dass das auch gar nicht anders geht - kann das jemand bestätigen?
Zweitens: Seit ich das MainForm.Handle benutze, werden die Buttons nicht angezeigt, wenn ich einen Splash-Screen nutze. Bisher hatte ich das so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TFSplash, FSplash); FSplash.Show; MainForm.DoOnCreateStuff; FSplash.Hide; Application.Run; |
Die Taskbar-Thumbnails müssen initialisiert werden, bevor irgendetwas angezeigt wird. Wenn ich das so mache, und die Dinger "auf dem Application-Fenster liegen", klappt das so wie oben. Wenn die auf dem MainForm.Handle liegen, klappt das nicht.
Zusätzlich merke ich grade, dass die Anzeige der Buttons auch ohne den SplashScreen nicht funktioniert, wenn ich das Programm aus der IDE heraus starte. Wenn ich die Exe direkt starte, klappt es.
Irgendjemand Ideen dazu?
We are, we were and will not be.