这里用到了几个API函数
1、CreateRectRgn:
2、GetWindowRgn:
函数GetWindowRgn声明如下:
int GetWindowRgn(HWND hWnd, HRGN hRgn);
hwnd 表示需要获取的窗口的Handle;
hRgn 就是上一个API的返回值。代表区域。
3、GetCursorPos:
函数 GetCursorPos 声明如下:
BOOL GetCursorPos(LPPOlNT IpPoint);
IpPoint :POINT结构指针,该结构接收光标的屏幕坐标。
4、PtInRegion:
函数 PtInRegion 声明如下:
BOOL PtInRegion(HRGN RGN , INT X, INt Y);
RGN :表示要探查的区域
X,Y分别表示当前鼠标的坐标
该函数判断光标是否在指定的区域内。
不多说了上代码:
procedure TForm1.Timer1Timer(Sender: TObject);
var
r:integer;
hr:HRGN;
p:TPoint;
begin
hr := CreateRectRgn(0,0,0,0);
r := GetWindowRgn(Handle ,hr);
GetCursorPos(p);
if PtInRegion(hr,p.x,p.y) then
Label1.Caption :='鼠标进入'
else
Label1.Caption :='鼠标离开';
DeleteObject(hr);
end;
本文介绍了一个简单的Windows API示例程序,用于检测鼠标是否位于特定窗体内。通过使用CreateRectRgn、GetWindowRgn、GetCursorPos及PtInRegion等API函数,实现了对鼠标位置的实时监测。

1265

被折叠的 条评论
为什么被折叠?



