文档章节

学习 Message(11): 测试 TWMMouse 结构相关的鼠标消息

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 674
阅读 16
收藏 0

和 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

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/10/29/1322300.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
WINDOWS消息机制(三)---系统消息队列,线程消息队列

在前文中我们讲到,鼠标或者键盘事件产生的消息会送到操作系统的消息队列中,再从系统队列送到各线程对应的消息队列。本文主要讲述的就是系统队列以及线程队列。 1. 系统队列 当操作系统启动...

西昆仑
2012/07/02
0
0
VC 制作系统托盘程序实现将窗口最小化到系统托盘

VC 制作系统托盘程序实现将窗口最小化到系统托盘 2008年01月11日 星期五 10:24

nothingfinal
2009/12/25
0
0
【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7405479 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 上一节我们讲解了键盘...

长平狐
2012/11/12
134
0
VC托盘程序的简单实现

以下是网上看到的一个实现VC托盘的程序,好像只适用于对话框程序。经本人简单整理。 一、托盘简介 所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那...

wwl33695
2015/06/09
0
0
支持百万在线用户IM - J-IM

J-IM简介 J-IM(原名tio-im)是基于t-io写的轻量、高性能、(可能)支持百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议...

轨迹_
2018/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Hibernate SQLite方言

以下代码有参考过github上国外某位大佬的,在发文的最新稳定版Hibernate上是可用的,有时间再仔细分析一下 import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.S...

CHONGCHEN
今天
3
0
CentOS 7 MariaDB搭建主从服务器

本文编写环境为CentOS7。确保关闭SELinux,关闭防火墙或者防打开指定端口。具体信息如下 #master[root@promote ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [r...

白豆腐徐长卿
今天
10
0
介绍python中运算符优先级

下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部...

问题终结者
今天
3
0
Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
10
0
SpringSecurity认证流程源码级详解

SpringSecurity认证流程源码级详解 认证流程说明 认证结果如何在多个请求之间共享 获取认证用户信息

chendom
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部