百度了一下,有两种方法:
一:
procedure TForm1.Button1Click(Sender: TObject);
var
Rect:TRect ;
begin
rect.Left:=224 ;
rect.Top:=185 ;
rect.Bottom:=500 ;
rect.Right:=719;
windows.ClipCursor(@rect);
end;二、
procedure TForm1.Button1Click(Sender: TObject);
var
btButton2: TRect;
begin
btButton2 := Button2.BoundsRect;
MapWindowPoints(handle, 0, btButton2, 2); // 座标换算
ClipCursor(@btButton2); // 限制鼠标移动区域
end; 但是 以上两种方法有个弊端。一旦这个程序失去焦点,那么 鼠标移动范围就失去控制了(又可以移动到范围外地方了),请教更好的方法。
一:
procedure TForm1.Button1Click(Sender: TObject);
var
Rect:TRect ;
begin
rect.Left:=224 ;
rect.Top:=185 ;
rect.Bottom:=500 ;
rect.Right:=719;
windows.ClipCursor(@rect);
end;二、
procedure TForm1.Button1Click(Sender: TObject);
var
btButton2: TRect;
begin
btButton2 := Button2.BoundsRect;
MapWindowPoints(handle, 0, btButton2, 2); // 座标换算
ClipCursor(@btButton2); // 限制鼠标移动区域
end; 但是 以上两种方法有个弊端。一旦这个程序失去焦点,那么 鼠标移动范围就失去控制了(又可以移动到范围外地方了),请教更好的方法。
解决方案 »
- 咨询TIniFile.Create和FileExists问题
- 请问有DXF转其他格式的控件吗?
- 用数据源连接oracle里的blob字段问题~急~一脑子包
- 关于chart的滤波?
- ●●一个msOutlookBarPro的问题???怎样获得一个mxHeader中当前鼠标所在的mxButton的index?,我是指不用单击,因为鼠标移动button能获
- delphi怎么调用vb控件,我加载不进来最好能说详细点
- 怎样遍历一个ip地址段中的所有ip地址 100分
- 怎样知道在delphi中查看到电脑的硬件信息?
- 怎样设定StringGrid的某一列靠右对齐
- 如何安全且完整地释放Dll
- excel批量导入700条数据以上,报错:"out of memory while expanding memory stream"
- delphi程序分屏显示问题
SetWindowsHookEx(WH_MOUSE,MouseProc,hins,0);//也可以试试WH_MOUSE_LL
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//在这里面处理鼠标消息
}
具体的你看看MSDN就可以了
var
rbtn3: TRect;
begin
rbtn3 := Button3.BoundsRect;
MapWindowPoints(Handle, 0, rbtn3, 2);
ClipCursor(@rbtn3);// 还原到整个screen
var
rScreen: TRect;
begin
rScreen := Rect(0, 0, Screen.Width, Screen.Height);
ClipCursor(@rScreen);