FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Form en primer plano
Hola a todos, tengo una aplicación en C++ Builder en la que uno de sus Form (que no es el principal), quiero que esté en primer plano (StayonTop) pero también en primer plano ante cualquier otro programa o aplicación de Windows. ¿Se puede hacer? ¿Cómo?. Muchas Gracias.
|
#2
|
||||
|
||||
Mira alguno de los enlaces del final de esta página, abajo del todo, pueden servirte.
|
#3
|
||||
|
||||
Hola chinchan.
En el evento OnShow del form que te interese tenga ese comportamiento: Código:
void __fastcall TfrmSecundario::FormShow(TObject *Sender) { SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_SHOWWINDOW); }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
La respuesta de ecfisa es correcta , como lo es esta variante:
Código:
__fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } Código:
__fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { FormStyle = fsStayOnTop; } Saludos. |
#5
|
||||
|
||||
Analizando mejor la cuestión me doy cuenta de que se pide en un form que no sea el principal...
En ese caso el mecanismo que propongo es reescribir la función virtual TForm::WndProc(): Código:
class TForm2 : public TForm { ........... protected: virtual void __fastcall WndProc(Messages::TMessage &Message); .......... }; 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_NOACTIVATE); TForm::WndProc(Message); } Saludos. |
#6
|
|||
|
|||
Gracias por responder. Efectivamente, las soluciones que dáis valen si llamo a este Form como ShowModal, la solución creo que es la que apunta Escafandra al final, lo que ocurre es que me pierdo con eso de reescribir la función virtual TForm::WndProc():
Escfandra: podrías por favor, aclarar un poco esa última solución que has propuesto?. Muchas Gracias. |
|
|
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 |
|