读书人

CTRL+鼠标左键如何表示

发布时间: 2012-08-16 12:02:15 作者: rapoo

CTRL+鼠标左键怎么表示?
鼠标左键单击是if (Msg.message = WM_LBUTTONDOWN) then.... 再加上CTRL怎么表示呢?
也就是 检测到按住CTRL并且单击鼠标左键的时候 开始执行代码。谢谢

[解决办法]
消息是: if message.WParam = (MK_LBUTTON+MK_CONTROL) then

不过MouseDown事件就简单些
[解决办法]

Delphi(Pascal) code
unit Unit2;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ExtCtrls;type  TForm2 = class(TForm)    Button1: TButton;    Button2: TButton;    Button3: TButton;    Button4: TButton;    Timer1: TTimer;    procedure Timer1Timer(Sender: TObject);    procedure FormCreate(Sender: TObject);  private    { Private declarations }    procedure Msgpro(var msg: TMessage); message WM_LBUTTONDOWN;  public    { Public declarations }  end;var  Form2: TForm2;implementation{$R *.dfm}// 四楼的方法procedure TForm2.Msgpro(var msg: TMessage);begin  if msg.WParam = MK_LBUTTON + MK_CONTROL then    ShowMessage('control + 左键');end;procedure TForm2.FormCreate(Sender: TObject);begin  Timer1.Interval := 50;  Timer1.Enabled := True;end;procedure TForm2.Timer1Timer(Sender: TObject);var  st: string;begin  if GetKeyState(VK_CONTROL) and $80 <> 0 then  st := st + 'control按下 ';  if GetKeyState(VK_SHIFT) and $80 <> 0 then  st := st + 'shift按下 ';  if GetKeyState(VK_RETURN) and $80 <> 0 then  st := st + 'return按下 ';  if GetKeyState(VK_LBUTTON) and $80 <> 0 then  st := st + '左键按下 ';  if GetKeyState(VK_RBUTTON) and $80 <> 0 then  st := st + '右键按下 ';  if GetKeyState(VK_UP) and $80 <> 0 then  st := st + '向上按下 ';  if GetKeyState(VK_RIGHT) and $80 <> 0 then  st := st + '向左按下 ';  caption := st;end;end.
[解决办法]
判断鼠标的同时,判断下面
Delphi(Pascal) code
var  i:Integer;begin  i := GetKeyState(VK_CONTROL);  if i < 0 then    ShowMessage('ctrl被按下');end; 

读书人网 >.NET

热点推荐