zoukankan      html  css  js  c++  java
  • 学习 Message(11): 测试 TWMMouse 结构相关的鼠标消息


    和 TWMMouse 一致的消息结构有:
    TWMLButtonDblClk {左键双击}
    TWMLButtonDown   {左键按下}
    TWMLButtonUp     {左键抬起}
    TWMMButtonDblClk {中键双击}
    TWMMButtonDown   {中键按下}
    TWMMButtonUp     {中键抬起}
    TWMMouseMove     {鼠标移动}
    TWMRButtonDblClk {右键双击}
    TWMRButtonDown   {右键按下}
    TWMRButtonUp     {右键抬起}
    

    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        CheckBox1: TCheckBox;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      protected
        procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
        procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
        procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
        procedure WMMButtonDblClk(var Message: TWMMButtonDblClk); message WM_MBUTTONDBLCLK;
        procedure WMMButtonDown(var Message: TWMMButtonDown); message WM_MBUTTONDOWN;
        procedure WMMButtonUp(var Message: TWMMButtonUp); message WM_MBUTTONUP;
        procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
        procedure WMRButtonDblClk(var Message: TWMRButtonDblClk); message WM_RBUTTONDBLCLK;
        procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN;
        procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Clear;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.Align := alLeft;
      Memo1.ScrollBars := ssVertical;
      Memo1.Clear;
      Position := poScreenCenter;
      CheckBox1.Caption := '接受鼠标移动消息';
      Button1.Caption := '清空列表';
    end;
    
    procedure TForm1.WMLButtonDblClk(var Message: TWMLButtonDblClk);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标左键双击: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMLButtonDown(var Message: TWMLButtonDown);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标左键按下: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMLButtonUp(var Message: TWMLButtonUp);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标左键抬起: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMMButtonDblClk(var Message: TWMMButtonDblClk);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标中键双击: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMMButtonDown(var Message: TWMMButtonDown);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标中键按下: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMMButtonUp(var Message: TWMMButtonUp);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标中键抬起: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMMouseMove(var Message: TWMMouseMove);
    var
      x,y: Integer;
      s: string;
    begin
      if not CheckBox1.Checked then Exit;
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标移动: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMRButtonDblClk(var Message: TWMRButtonDblClk);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标右键双击: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMRButtonDown(var Message: TWMRButtonDown);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标右键按下: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    procedure TForm1.WMRButtonUp(var Message: TWMRButtonUp);
    var
      x,y: Integer;
      s: string;
    begin
      x := Message.XPos;
      y := Message.YPos;
      s := Format('鼠标右键抬起: %d,%d', [x,y]);
      Memo1.Lines.Add(s);
      Message.Result := 0;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 206
      ClientWidth = 321
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Memo1: TMemo
        Left = 8
        Top = 8
        Width = 185
        Height = 89
        Lines.Strings = (
          'Memo1')
        TabOrder = 0
      end
      object CheckBox1: TCheckBox
        Left = 199
        Top = 8
        Width = 122
        Height = 17
        Caption = 'CheckBox1'
        TabOrder = 1
      end
      object Button1: TButton
        Left = 199
        Top = 173
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 2
        OnClick = Button1Click
      end
    end
    
  • 相关阅读:
    Android Studio遇到了“No USB devices or running emulators detected”
    (转)Android Studio启动AVD遇到的问题 ( HAXM安装失败)
    (转)秒懂,Java 注解 (Annotation)你可以这样学 ---- 重要 注解定义与反射解析
    DSL简介(转)
    有什么软件可以让手机使用卫星通信吗?
    Openfire调整成自己的IM部署到LInux系统上
    cpu和gpu的区别
    (转)OpenFire源码学习之二十七:Smack源码解析
    (转)OpenFire源码学习之十八:IOS离线推送
    (转)openfire插件开发(三)通过http方式向openfire客户端发信息
  • 原文地址:https://www.cnblogs.com/del/p/1322300.html
Copyright © 2011-2022 走看看