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;