Cita:
|
Empezado por cHackAll
Estimado compañero, el comentario fue de las mejores intenciones no era para que respondas de esa forma y casi que ni estaba orientado a "alguien". Me parece un tema curioso por eso yo participo. Lo que comentabas del WndProc tampoco funcionará por la explicacion que di con anterioridad.
Yo creo que si.
Saludos y haber que hacemos...
|
Estimado
cHackAll, solamente respondí a tu pregunta
Tal vez no del modo adecuado, pero ahora me surge la duda de si tú lo has probado?, porque reitero que SI FUNCIONA.
En cuando a lo de capturar los mensajes del componente, bueno pues... en vez de andar "hackeando componentes", la prueba que hago es ir directamente a por su WndProc y el resultado es este....
Código Delphi
[-]
procedure TFormMain.Button1Click(Sender: TObject);
begin
FNuevaInstancia := MakeObjectInstance(NuevoWndProc);
FPrevInstancia := Pointer(GetWindowLong(ScrollBox1.Handle,GWL_WNDPROC));
SetWindowLong(ScrollBox1.Handle,GWL_WNDPROC, LongInt(FNuevaInstancia));
end;
procedure TFormMain.NuevoWndProc(var Message: TMessage);
begin
with Message do
case Msg of
WM_RBUTTONDBLCLK :
begin
ShowMessage('DOBLE CLICK');
Result := 1;
end;
WM_LBUTTONUP :
begin
ShowMessage('UN CLICK');
Result := 1;
end;
else
Result := CallWindowProc(FPrevInstancia,
ScrollBox1.Handle,
Msg,
wParam,
lParam);
end;
end;
Ciertamente, NO FUNCIONA.
Pero para salir del paso, observarás que he cambiado lo que debería ser el botón izquierdo por el
derecho, y de ese modo SI FUNCIONA... Aunque cambia la mecánica, podría ser una solución.
Saludos.