Ver Mensaje Individual
  #16  
Antiguo 17-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
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.

Última edición por escafandra fecha: 17-10-2012 a las 23:48:57.
Responder Con Cita