Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 16-10-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Una función virtual es una función de la clase base que puede ser, o no, redefinida en las clases derivadas y que tras ello puede ser llamada desde un puntero o referencia a su clase base.

WndProc es una función virtual de la clase base TForm que hereda nuestro formulario y que usará a no ser que la reescribamos para nuestro formulario. WndProc se encarga del tratamiento de todos los mensajes de TForm y las clases derivadas (se hereda). Como nos interesa interceptar los mensajes redefino la función, es por ello que puse una fracción de la definición de la clase de nuestro formulario en primer plano:

Código:
class TForm2 : public TForm
{
...........
protected:    
  virtual void __fastcall WndProc(Messages::TMessage &Message);
..........
};
Y luego la implementamos teniendo cuidado de terminar llamando a la función WndProc de la clase base (TForm::WndProc).

Este truco sirve para interceptar cualquier mensaje o crear nuevos eventos o respuestas a mensajes no previstos en la clase base TForm.

También podemos dar respuesta a un mensaje con la macro BEGIN_MESSAGE_MAP / END_MESSAGE_MAP(TForm)...

En definitiva, en este caso, estamos reescribiendo la respuesta al mensaje WM_KILLFOCUS para aprovechar a ponernos en primer plano:
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);
}
Espero haberme explicado bien.


Saludos.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 14:37:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi