Ver Mensaje Individual
  #11  
Antiguo 16-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Seguramente el comportamiento difiera por la diferente versión de S.O. ...
Muy seguramente...
Cita:
Empezado por ecfisa Ver Mensaje
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 Ver Mensaje
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.
Responder Con Cita