![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#17
|
||||
|
||||
|
Mejorando el código para el caso de tener mas de dos formularios abiertos y sólo uno sea TopMost:
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 && Message.WParam != 0){
SetWindowPos(Application->MainForm->Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
for(int i = 0; i<Application->ComponentCount; i++){
TForm *F = static_cast<TForm*>(Application->Components[i]);
if (F) ReDrawWindow(F->Handle);
}
}
TForm::WndProc(Message);
}
Saludos. |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Abrir outlook en primer plano | Jose Manuel | Servers | 3 | 24-02-2012 19:25:50 |
| 2 Form Siempre En Primer Plano | FrianxD | C++ Builder | 16 | 15-01-2008 22:41:02 |
| Como mostrar en primer plano | Blackspike | API de Windows | 4 | 14-01-2008 09:13:20 |
| Aplicación en primer plano | jordillussa | Varios | 4 | 20-03-2007 19:58:43 |
| Aplicación siempre en primer plano | Novás | Varios | 2 | 08-03-2004 09:31:09 |
|