转自 剑神一笑 的Blog http://blog.youkuaiyun.com/pankun/
大家都知道每个窗口都有默认的窗口函数来进行对窗口消息的处理.
而子类化技术就是替换窗口的窗口函数为自己定义的函数的技术.例如下面的代码:
var
Form1: TForm1;
OldWndProc: Pointer;
implementation
{$R *.dfm}
function NewWndProc(hHwnd, Msg, wParam, lParam: LongWORD): Longint; stdcall;
begin
if Msg=WM_CLOSE then
exit;
Result := CallWindowProc(OldWndProc, hHwnd, Msg, wParam, lParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{保存旧的窗口函数地址}
OldWndProc := Pointer(GetWindowLong(Self.Handle, GWL_WNDPROC));
{设置新的窗口函数为自定义函数}
SetWindowLong(Self.Handle, GWL_WNDPROC