SetWindowPos

03/07/2011 - 18:57 von Lothar Geyer | Report spam
Ich habe eine MDI-Anwendung, die auch einige non-MDI-Childs beinhaltet.
Diese non-MDI-Childs sollen folgendes machen:

wenn sie in einem Timer-Event mittels frmNonMDICh.Show gestartet werden,
sollen sie zwar angezeigt, aber nicht aktiviert werden. D.h. wenn der
Benutzer in einem MDI-Fenster gerade eine Textbox ausfüllt, soll der
Focus in dieser Textbox bleiben und nicht in eine ggfls. vorhandene und
enable'te Textbox der frmNonMDICh wechseln.

Ich versuche das mit dem Aufruf von

SetWindowPos Me.hWnd, HWND_TOPMOST, _
0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW _
Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOOWNERZORDER

in Form_Load der frmNonMDICh zu machen.
(die Konstanten habe ich überprüft ;-) )

Das funktioniert aber nicht. Bzw. nur teilweise:
1) die frmNonMDICh wird wie gewünscht angezeigt und nicht aktiviert,
wenn a) die MDI-Form minimiert ist oder wenn b) die MDI-Form nicht
minimiert ist und auch nicht den Fokus hat
2) die frmNonMDICh erhàlt aber den Fokus, wenn die MDI-Form den Fokus
hat, aber eine andere NonMDIChild-Form den Folus hat

.SetFocus-Befehle usw. habe ich überprüft. Was mache ich falsch? Bzw.
was fehlt?

Lothar Geyer
 

Lesen sie die antworten

#1 G.Wietzorek
04/07/2011 - 07:54 | Warnen spam
Am 03.07.2011 18:57, schrieb Lothar Geyer:

Hallo Lothar,

Ich habe eine MDI-Anwendung, die auch einige non-MDI-Childs beinhaltet.
Diese non-MDI-Childs sollen folgendes machen:

wenn sie in einem Timer-Event mittels frmNonMDICh.Show gestartet werden,
sollen sie zwar angezeigt, aber nicht aktiviert werden. D.h. wenn der
Benutzer in einem MDI-Fenster gerade eine Textbox ausfüllt, soll der
Focus in dieser Textbox bleiben und nicht in eine ggfls. vorhandene und
enable'te Textbox der frmNonMDICh wechseln.

Ich versuche das mit dem Aufruf von

SetWindowPos Me.hWnd, HWND_TOPMOST, _
0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW _
Or SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOOWNERZORDER

in Form_Load der frmNonMDICh zu machen.

Das funktioniert aber nicht.



Das Problem müsste hier dein frmNonMDICh.show sein. Hier dürfte VB unter
der Haube ein ShowWinwow(<hwnd>,SW_SHOW) daraus machen...

Nimm statt dessen ShowWindow(frmNonMDICh.hwnd, SW_SHOWNOACTIVATE) - das
sollte funktionieren.


Gert

"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein

Ähnliche fragen