SetForegroundWnd problem
-
hm.. also SetFore...() geht auch mit childs..
ich hab die funktion desshalb genommen:
aus PSDK:
*
The SetForegroundWindow function puts the thread that created the specified
window into the foreground and activates the window. Keyboard input is directed
to the window, and various visual cues are changed for the user. The system
assigns a slightly higher priority to the thread that created the foreground
window than it does to other threads.
*SetWindowPos() macht irgentwie nicht so das was ich will:
wenn ich die z-Order so lass bekommt des child ja nich den keyboard input und wenn ich die z-order änder dann hat das nicht den gewünschten erfolg
falls ich mich irre (mein englisch ist nict wirklich gut...) sagts mir bitte
-
Du hast recht, von der Beschreibung her müßte es auch mit SetFo... gehen. Was ich mir vorstellen könnte ist daß das Problem im Timing liegt. Versuch mal zwischen SetFo.. und keybd_envt eine kleine Zeitverzögerung; z.B. 200 ms einzubauen.
-
Original erstellt von Uli:
Was ich mir vorstellen könnte ist daß das Problem im Timing liegt. Versuch mal zwischen SetFo.. und keybd_envt eine kleine Zeitverzögerung; z.B. 200 ms einzubauen.öhm.. kann es sein das wir aneinandervorbei reden?
es funktioniert alles wunderbar!
NUR:
(hab ich noch garnicht erwähnt) [oops] es ist nicht meine Anwendung
also das child (edit-control) ist nicht in meiner AnwendungDa ich vermeiden will das es in der besagten (fremden) Anwendung knallt (kann ja sein?!) wollte ich nachdem ich das child hervorgezogen und [retrun] gedrückt hab wieder zurück stecken...
was ich noch sagen sollte das child ist nicht WS_VISIBLE (unter umständen)
-
aha, das ist natürlich was anderes. Es steht zwar in der Funktionsbeschreibung nichts darüber, aber ich vermute daß keybd_envt nicht taskübergreifend funktioniert.
Wenn Du das Festerhandle dieses Child-Windows hast, warum simulierst Du nicht direkt über eine WM_KEYDOWN und WM_KEYUP Message die Return-Taste. Ist vielleicht etwas aufwendiger aber da weiß man, daß die Message auch ankommt.
[ Dieser Beitrag wurde am 03.04.2003 um 07:51 Uhr von Uli editiert. ]
-
Original erstellt von Uli:
ich vermute daß keybd_envt nicht taskübergreifend funktioniert.Falsch vermutet!
-
Original erstellt von Uli:
**Wenn Du das Festerhandle dieses Child-Windows hast, warum simulierst Du nicht direkt über eine WM_KEYDOWN und WM_KEYUP Message die Return-Taste. Ist vielleicht etwas aufwendiger aber da weiß man, daß die Message auch ankommt.
***seufz*
ich weis doch das die message ankommt! und ich weis auch das alles funktioniert (fremde anwendung meldet sich wenn in dem edit return gedrückt wird..)
ich wollt nur vermeiden das wenn das fremde prog (kA) die z-order braucht und oder was weis ich es nicht so wirklich mag wenn des edit im foreground ist...
ich such lediglich sowas wie (kA) SetWindowToOldZorder() oder SetBackgroundWindow() oder SaveZorder() / StelleAlteZorderWiederHer()
denn die fremde anwendung läuft so 24/7 lang... und das ohne das ich jetzt schnell mal das machen kann: "OH die anwendung ist abgeraucht , dann starte ich sie mal lieber schnell neu..."
PS: "Ist vielleicht etwas aufwendiger" genau desshalb benütz ich dast net...
-
Normalerweise kann man davon ausgehen, dass die Programme nicht crashen wenn man die z-order verändert, oder nicht ?
-
Original erstellt von geeky:
Normalerweise kann man davon ausgehen, dass die Programme nicht crashen wenn man die z-order verändert, oder nicht ?hm.. joa stimmt schon wollt halt auf nummer sicher gehn (*leicht paranoid..*)
aber rein der interesse nach gibt es sowas wie:
SaveZorder() oder SetZorder()
-
zum 2.: SetWindowPos
-
Original erstellt von flenders:
zum 2.: SetWindowPosbitte nich gleich mit den augen rollen (sonst fallen sie noch raus:D)
ok ich geb ja jetzt auch ruhe...