环境: Windows Server 2003 Delphi 2010 在VCL中,直到TWinControl才开始有了消息句柄。那么对于从更底层继承的类,如何添加消息处理呢?下面就是一种非常简单的方法。 uses Classes, Messages; const WM_TEST = WM_USER + 1000; type TMsgProcDemo = class(TObject) private FHandle: THandle; protected procedure WndProc(var Msg: TMessage); virtual; procedure WMTestProc(var Msg: TMessage); virtual; public constructor Create; destructor Destroy; override; property Handle: THandle read FHandle; end; implementation constructor TMsgProcDemo.Create; begin inherited; FHandle := AllocateHWnd(WndProc); end; destructor TMsgProcDemo.Destroy; begin DeallocateHWnd(FHandle); inherited; end; procedure TMsgProcDemo.WndProc(var Msg: TMessage); begin Dispatch(Msg); end; procedure TMsgProcDemo.WMTestProc(var Msg: TMessage); begin //TODO: 收到 WM_TEST 消息后的处理 end;