'Fliegende' oder 'schwebende' Fenster
-
Hallo,
habe vor einiger Zeit irgendwo dieses Stichwort aufgeschnappt, kann aber weder hier noch draußen im Netz einen Hinweis dazu finden.
Folgender Hintergrund:
Von einer Anwendung aus öffne ich gleichzeitig ein Word-Dokument und eine Sound-Datei (mp3, wav), die miteinander in Beziehung stehen. Dabei wird das Word-Dokument in MS-Word angezeigt, und zur Steuerung der Sounddatei wird ein Mini-Form geöffnet, das nur eine TrackBar-Komponente enthält.Funktioniert soweit einwandfrei, ist nur nicht besonders bedienfreundlich, da eben normalerweise immer nur eins von beiden Fenstern im Vordergrund ist.
Schick wäre eine Lösung, bei der das Mini-Form - ähnlich dem Windows-Task-Manager - immer im Vordergrund 'schwebt' oder 'fliegt'.
Gruß
Leo
-
Dem Fenster im Objektinspektor der Eigenschaft FORMSTYLE = fsStayOnTop zuweisen
-
FormStyle = fsStayOnTop, wenn das nicht reicht ueber die WinAPI versuchen und WS_EX_TOPMOST-Style setzen.
-
Hallo,
fsStayOnTop reicht leider nicht. Könntest Du den Hinweis ...
Sunday schrieb:
(...) ueber die WinAPI versuchen und WS_EX_TOPMOST-Style setzen.
... etwas näher erläutern!
Besten Dank!
Leo
-
warum sollte stayontop nicht funktioniren?
nix anderes ist die api funktion - nur das das automatisch beim erzeugen des neuen fensters gesetzt wird...stayontop funzt - oder du machst was falsch
-
Hallo,
was mache ich falsch?
Von einem Haupformular aus rufe ich per Buttonclick das besagte Form wie folgt auf
MiniForm->ShowModal();Sobald ich aber irgend ein anderes Programm auswähle (Word, Notepad etc.) ist mein MiniForm nicht mehr sichtbar.
Gruß
Leo
-
dasdsad schrieb:
warum sollte stayontop nicht funktioniren?
nix anderes ist die api funktion - nur das das automatisch beim erzeugen des neuen fensters gesetzt wird...fsStayOnTop hat nichts mit WS_EX_TOPMOST zu tun!
probiere es so:
void __fastcall TForm4::FormShow(TObject *Sender) { // erweiterten Fensterstil setzen um Fenster ganz oben anzeigen zu können SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_TOPMOST); // Fenster in der z-Ordnung ganz nach oben verschieben SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE); }
-
Hallo,
super, es funktioniert! Besten Dank!
Gruß
Leo