WM_SYSCOMMAND 消息的 LParam 参数是鼠标位置, 低位是 X, 高位是 Y.
下面三段程序是一样的只是使用不同类型的消息参数, 用 TWMSysCommand 更方便, 用 TMessage 更正统.
程序一:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) protected procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMSysCommand(var Message: TWMSysCommand); begin Text := Format('%d,%d', [Message.XPos, Message.YPos]); inherited; end; end.
程序二:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) protected procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMSysCommand(var Message: TMessage); begin Text := Format('%d,%d', [LoWord(Message.LParam), HiWord(Message.LParam)]); inherited; end; end.
程序三:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) protected procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMSysCommand(var Message: TMessage); begin Text := Format('%d,%d', [Message.LParamLo, Message.LParamHi]); inherited; end; end.