Windows - interceptando mensagens |
Top Previous Next |
var OldWindowProc : Pointer;
type WParameter = LongInt; LParameter = LongInt;
implementation
function NewWindowProc(WindowHandle: hWnd; TheMessage: WParameter; ParamW: WParameter; ParamL: LParameter): LongInt; stdcall; begin // Verifica se a mensagem é a barra de rolagem sendo mechida... if TheMessage = WM_VSCROLL then begin // Caso queira abortar a mensagem basta retornar ZERO e EXIT... Result := 0; Exit; end; // Chama a rotina velha para processar as outras mensagens NewWindowProc := CallWindowProc(OldWindowProc, WindowHandle, TheMessage, ParamW, ParamL); end;
procedure TForm1.FormCreate(Sender: TObject); begin OldWindowProc := Pointer(SetWindowLong(DbGrid1.Handle, GWL_WNDPROC, Longint(@NewWindowProc))); end;
procedure TForm1.FormDestroy(Sender: TObject); begin SetWindowLong(DbGrid1.Handle, GWL_WNDPROC, LongInt(OldWindowProc)); end; |