Cita:
Empezado por ecfisa
Seguramente el comportamiento difiera por la diferente versión de S.O. ...
|
Muy seguramente...
Cita:
Empezado por ecfisa
En Vista, lo que me sucede es que al mostrar el form por primera vez y realizar foco sobre otra aplicación de fondo, no pierde su condición de estar al frente. Pero al repetir la acción, es decir, darle nuevamente el foco al form y luego hacer click sobre otra aplicación la pierde.
|
¿Has probado así en Vista:?
Código:
if(Visible && Message.Msg == WM_KILLFOCUS || Message.Msg == WM_SHOWWINDOW)
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
Cita:
Empezado por ecfisa
Y como detalle, del mismo modo lo hace si se agrega una lína con BringToFront(), todo esto habiendo sido mostrado como no modal..
|
En WinXp
BringToFront(), en la captura de WndProc(), no funciona.
Quizás deba quedar así:
Código:
void __fastcall TForm2::WndProc(Messages::TMessage& Message)
{
if(Visible && Message.Msg == WM_KILLFOCUS || Message.Msg == WM_SHOWWINDOW)
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
TForm::WndProc(Message);
}
Habría que probar en Vista y en Win7...
Saludos.