在delphi中可以利用 ClipCursor函数限定鼠标活动区域。
函数原型如下:
BOOL ClipCursor( CONST RECT *lpRect ) ;
其中参数 RECT 为指向一个矩形区域的指针,坐标为屏幕坐标。如果设置为 0,则鼠标可以在整个屏幕中自由移动。
因为 ClipCursor 需要屏幕坐标作为参数,所以通过调用函数 MapWindowPoints 将点相对坐标转换为屏幕坐标。该函数原型如下:
int MapWindowPoints(
HWND hWndFrom, // handle of window to be mapped from
HWND hWndTo, // handle of window to be mapped to
LPPOINT lpPoints, // address of structure array with points to map
UINT cPoints // number of structures in array
);
其中的 4 个参数含义如下。
• hWndFrom:转换前作为坐标原点的窗体,如果为 NULL 或 HWND_DESKTOP 则表示屏幕。
• hWndTo:转换后作为坐标原点的窗体,如果为 NULL 或 HWND_DESKTOP 则表示屏幕。
• lpPoints:存储需要转换的点的数组地址。
• cPoints:需要转换的点的个数。