Entwickler-Ecke

Windows API - Wie Bringe Ich Meine FORM / APPLIKATION in den VorderGrund?


Darkmorph - So 23.03.03 20:20
Titel: Wie Bringe Ich Meine FORM / APPLIKATION in den VorderGrund?
wie Der Titel impliziert möchte ich mein Programm in den Vordergrund, also vor alle anderen Anwendungen aufgrund eines beliebigen Events, bringen. ich dachte es währe BringToFront oder Application.BringToFront... aber ohne erfolg... hat niemand eine ahnung?

MfG Ben


AndyB - So 23.03.03 20:25

Wieso sollte Application.BringToFront nicht funktionieren? Möchtest du dein Formular etwa über einem StayOnTop Fomular haben?


Delete - So 23.03.03 20:35


Quelltext
1:
SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);                    

Ich hoffe, ich habe aus dem Kopf keinen Parameter vergessen. :roll:


Darkmorph - So 23.03.03 20:49

erstemal vielen dank für die Hilfe aber
funzt so nicht...

Quelltext
1:
SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, [b]0,[/b] SWP_NOMOVE or SWP_NOSIZE);                    


eine null zu viel :)

und STAYONTOP will ich nicht!!

ich will, das meine Applikation nach vorne kommt, wenn ich etwas empfange!!
hatte gedacht, es wäre mit bringtofront möglich, aber es passiert bei mir unter WINXP und WIN2k nicht.

Szenario:
Meine Applikation hinter einer anderen. Ich empfange Message. dann will ich das mein Prog nach vorne kommt!

Plz HelP :)

MorPH


Darkmorph - So 23.03.03 20:54

hi,
ich nochmal :)
vielen dank nochmal für die hilfe an alle beteiligten :)

habe jetzt eine unschöne Methode benutzt, und zwar:

Quelltext
1:
2:
SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE);
SetWindowPos(Form1.Handle, HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE);


diese funzt, ist aber nicht ideal... frag mich wieso es nicht mit BringToFront funktionierte... :(

MfG Morph


Delete - So 23.03.03 21:01

Sag mit noch mal das mein API-Lösung unschön ist. :x

Und anders geht es nicht und ohne VCL schon gar nicht.

fsStayOnTop würde noch gehen, aber da sagt die Hilfe:
Zitat:

Note: It is not advisable to change FormStyle at runtime.


Also ist meine Weg in Ordnung und auch richtig!


Alibi - So 23.03.03 21:03

Klappt
Form123.FormStyle := fsStayOnTop;
nicht?


Darkmorph - So 23.03.03 21:07

@alibi
ich will nur das die fenster nach vorne kommen und nicht immer vorne bleiben sollen. ich habs ja jetzt so gelöst, das ich im grunde stayontop setze und dann wieder zurücksetze... siehe post weiter oben!

@Luckie

ich hatte früher einmal die funktion formx.bringtofront benutzt und damals hatte die auch glaube ich funktioniert... aber mittlerweile nicht mehr... :?

ich bin dir dankbar für deine hilfe. aber ein alwaysstayontop-value-change bewirkt doch im gerunde auch den aufruf deiner API-Funktion, oder lieg ich falsch?

Interpretiere das nicht als Auflehnung oder Angriff, ich bin nur verdutzt, das die BringToFront Funktion, deren Name und die Online-Hilfe sagen aus, das diese Die Applikation, bzw, die Form nach ganz vorne bringen, also vor alle anderen Fenster...

MfG MorPH


Delete - So 23.03.03 21:32

War ja auch nur als Scherz gemeint. :wink:


wulfskin - So 23.03.03 21:44

Wir wär's mit:  SetForegroundWindow(Handle);?


Darkmorph - So 23.03.03 21:48

funzt auch nicht,

ist aber auch eigentlich das gleiche wie Bringtofront

SetForeGroundWindow(hwnd) wird von der BringtoFront-Funktion benutzt.

mFG BEN


Motzi - Mo 24.03.03 12:20

Unter Win2k/XP kann man SetForegroundWindow irgendwie "deaktivieren". Auf http://www.swissdelphicenter.ch gibts aber einen Tipp der eine Funktion ForceForegroundWindow zeigt die das Fenster aber auf jeden Fall in den Vordergrund setzt.