易语言-API 取窗口或者组件句柄的 屏幕坐标并限制区域 GetWindowRect ClipCursor getwindowrect GetClientRect WindowFromPoint

.版本 2

.DLL命令 ClipCursor_, 整数型, "user32", "ClipCursor", , 将指针限制到指定区域。ClipCursorBynum是一个别名,允许我们清除以前设置的指针剪切区域  非零表示成功,零表示失败。会设置GetLastError
    .参数 lpRect, RECT, , RECT,指定一个矩形,用像素屏幕坐标系统表示。鼠标指针必须在这个区域内运动。如使用函数的ClipCursorBynum形式,则可将参数设为Long值,用它传递一个0,禁止指针剪切,恢复常规运作状态;

.DLL命令 GetWindowRect_, 整数型, "user32", "GetWindowRect", , 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内  非零表示成功,零表示失败。会设置GetLastError
    .参数 hwnd, 整数型, , 想获得范围矩形的那个窗口的句柄
    .参数 lpRect, RECT, , RECT,屏幕坐标中随同窗口装载的矩形;

 

 

.版本 2

.数据类型 RECT, , 矩形;矩形;
    .成员 Left, 整数型
    .成员 Top, 整数型
    .成员 Right, 整数型
    .成员 Bottom, 整数型

 

 

 

.版本 2

.子程序 _按钮1_被单击
.局部变量 RectE, RECT

GetWindowRect_ (编辑框1.取窗口句柄 (), RectE)
ClipCursor_ (RectE)

 

 解决的办法:

1:你可以使用函数的ClipCursorBynum,可将参数设为Long值,用它传递一个

0,恢复常规运作状态。

2:使用ReleaseCapture搜索函数来解除。

 

 

相互转化用ScreenToClient 或者 ClientToScreen

 

 

 

GetClipCursor
编辑

 

函数功能:该函数检取一个矩形区域的屏幕坐标,光标被限制在该矩形区域之内。
函数原型:BOOL GetClipCursor(LPRECT IpRect);
参数:
IpRect:一个RECT结构的指针;接收限制矩形的屏幕坐标。如果该光标没有被限制在一个矩形区域内,则该RECT结构接收屏幕的尺寸。
返回值:如果成功,返回非零;如果失败,返回值为零,若想获得更多错误信息,请调用GetLastError函数。
备注:该光标是一个共享光标,如果一个应用程序使用ClipCursor函数来限制该光标,那么在它放弃控制转向另一个应用之前必须使用ClipCursor来释放该光标,该调用过程必须具有对窗口站的WINSTA_READATTRIBUTES访问权限。
速查:Windows NT:3.1及以上下版本;Windows:95及以上版本;Windows CE:不支持;头文件:Winusre.h;库文件:user32。lib。

 

 

 

 

ClipCursor
编辑

 

函数功能:该函数把鼠标限制在屏幕上的一个矩形区域内,如果调用SetCursor或用鼠标设置的一个随后的鼠标位置在该矩形区域的外面,则系统自动调整该位置以保持鼠标在矩形区域之内。
函数原型:BOOL ClipCursor(CONST RECT * lpRect);
参数:
IpRect:指向RECT结构的指针,该结构包含限制矩形区域左上角和右下角的屏幕坐标,如果该指针为NULL(空),则鼠标可以在屏幕的任何区域移动。
返回值:如果成功,返回值非零;如果失败,返回值为零。若想获得更多错误信息,请调用GetLastError。
备注:
1.光标是一个共享资源,如果一个应用控制了鼠标,在将控制转向另一个应用之前,必须要使用ClipCursor来释放鼠标,该调用过程必须具有对窗口的WINSTA_WRITEATTRIBUTES访问权。
2.此函数为api函数,调用时要函数声明:Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;库文件;user32.lib。
#include
#include
int main(int argc, char* argv[])
{
printf("\n别害怕15妙后你的鼠标就可以使用了^_^\n");
RECT rect;
rect.bottom=1;
rect.right=1;
//-----------add------
rect.left=0;
rect.top=0;
//-----------end-----
ClipCursor(&rect);
::Sleep(15000);
ClipCursor(NULL);//释放
return 0;
}

 

 

 

你可能感兴趣的:(易语言)