Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 22-08-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por JuanErasmo Ver Mensaje
lo del hook, es estrictamente necesario?
El problema es que cuando camies ep Parent de tu botón, el evento OnClick no te responderá, porque está en el entorno de memoria designado al nuevo proceso. Por este motivo debes arreglártelas, para conseguirlo, con un Hook.

Código:
HHOOK WHookMouse = 0;
LRESULT CALLBACK MouseHookCallBack(int Code, WPARAM wParam, LPARAM lParam);

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::Hook()
{
   if(WHookMouse == 0)
     WHookMouse = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)MouseHookCallBack, HInstance, 0);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::UnHook()
{

   UnhookWindowsHookEx(WHookMouse);
   WHookMouse = 0;

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
 
LRESULT CALLBACK
MouseHookCallBack(int Code, WPARAM wParam, LPARAM lParam)
{
   if(Code>=0){
     if(wParam == WM_LBUTTONDOWN){
       TPoint Point;
       ::GetCursorPos(&Point);
       HWND W = WindowFromPoint(Point);     
       if(W == Form1->Boton->Handle))
            BotonClick();   // Funcion que procese tu acción.    
       }
   }
   return CallNextHookEx(WHookMouse, Code, wParam, lParam);
}
Saludos.

Edito: Escribí de memoria y me he dado cuenta que cometí un pequeño error cambio Boton->Handle por Form1->Boton->Handle;
Todo este código debe estar en la misma unit.cpp
OnClick puede ser un método de Form1 si así lo quieres: entonces Form1->Onclick(); ...o como lo quieres llamar.

Última edición por escafandra fecha: 22-08-2008 a las 08:50:05.
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
Insertar Boton en StringGrid, seb@ OOP 19 10-04-2016 05:09:21
insertar imagen en un botón emiliu Varios 9 14-09-2012 23:32:09
bloquear el boton [X] para cerrar una ventana juanmdq HTML, Javascript y otros 3 19-12-2005 23:17:04
ayuda... tamaño ventana y botón maximizar. gontxalo OOP 0 18-05-2005 18:32:52
Como puedo saber si se le ha dado al botón de minimizar en una ventana? lolobs Varios 3 10-09-2003 12:44:33


La franja horaria es GMT +2. Ahora son las 07:39:52.


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