Cita:
¿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);
|
Hola escafandra.
Si, pero al incluir en el condicional "
...|| Message.Msg == WM_SHOWWINDOW)" hace que deje de tener el comportamiento, al igual que al agregar "
| SWP_NOACTIVATE" como flag.
Hasta ahora el único modo con que he podido lograr el comportamiento es con:
Código:
void __fastcall TForm2::WndProc(Messages::TMessage& Message)
{
if( Visible && Message.Msg == WM_KILLFOCUS ) {
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW );
TForm::WndProc(Message);
}
Realmente no sé el motivo, por que evaluar
WM_KILLFOCUS y
WM_SHOWWINDOW en el condicional pareciera totalmente razonable...
Saludos.