Pues entonces vamos a forzar la máquina un poco mas.
Creo que este código va a funcionar en XP, Vista y Seven. Espero no equivocarme pues sólo lo he probado en XP
Código:
void ReDrawWindow(HWND hWnd)
{
TRect cr;
::GetClientRect(hWnd, &cr);
InvalidateRect(hWnd, &cr, true);
SendMessage(hWnd, WM_NCPAINT, 0, 0);
RedrawWindow(hWnd, &cr, 0, RDW_FRAME|RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);
}
void __fastcall TForm2::WndProc(Messages::TMessage& Message)
{
if(Visible && Message.Msg == WM_WINDOWPOSCHANGING)
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
if(Visible && Message.Msg == WM_ACTIVATE){
SetWindowPos(Application->MainForm->Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
ReDrawWindow(Application->MainForm->Handle);
}
TForm::WndProc(Message);
}
Saludos.