interface
uses
Winapi
.
Windows, Winapi
.
Messages, System
.
SysUtils, System
.
Classes, FMX
.
Forms,
FMX
.
Platform
.
Win, FMX
.
Types, FMX
.
Layouts, FMX
.
Memo;
type
TForm1 =
class
(TForm)
Memo1: TMemo;
procedure
FormCreate(Sender: TObject);
procedure
FormDestroy(Sender: TObject);
private
FHwnd: HWND;
FOldWndProc: LONG;
public
function
WndProc(HWND: HWND; Msg: UINT; wParam: wParam; lParam: lParam): LRESULT;
end
;
var
Form1: TForm1;
implementation
{$R *.fmx}
function
WindowProc(HWND: HWND; Msg: UINT; wParam: wParam; lParam: lParam): LRESULT; stdcall;
begin
Result := Form1
.
WndProc(HWND, Msg, wParam, lParam);
end
;
procedure
TForm1
.
FormCreate(Sender: TObject);
begin
FHwnd := FmxHandleToHwnd(Handle);
FOldWndProc := GetWindowLongPtr(FHwnd, GWL_WNDPROC);
SetWindowLongPtr(FHwnd, GWL_WNDPROC, NativeInt(@WindowProc));
end
;
procedure
TForm1
.
FormDestroy(Sender: TObject);
begin
SetWindowLongPtr(FHwnd, GWL_WNDPROC, FOldWndProc);
end
;
function
TForm1
.
WndProc(HWND: HWND; Msg: UINT; wParam: wParam; lParam: lParam): LRESULT;
begin
Result :=
0
;
if
Msg = WM_MOUSEWHEEL
then
begin
Memo1
.
Lines
.
Add(
'亲~!你使用了鼠标滚轮哦~!'
);
Exit;
end
;
Result := CallWindowProc(Ptr(FOldWndProc), HWND, Msg, wParam, lParam);
end
;
end
.