使用键盘移动光标

【勇芳软件工作室】汉化HomePreviousNext

因为Windows不需要鼠标,应用程序应该能够使用键盘来模拟鼠标操作。以下示例显示了如何通过使用GetCursorPosSetCursorPos函数以及通过处理箭头键的输入来实现此目的。

HCURSOR hCurs1, hCurs2; //光标句柄

POINT pt; //光标位置

RECT rc; //客户区域坐标

static int repeat = 1; //重复键计数器

//

//其他声明和初始化。

//

开关(讯息)

{

//

//处理其他消息。

//

case WM_KEYDOWN:

if (wParam != VK_LEFT && wParam != VK_RIGHT &&

wParam != VK_UP && wParam != VK_DOWN)

{

break;

}

GetCursorPos(&pt);

//将屏幕坐标转换为客户端坐标。

ScreenToClient(hwnd, &pt);

开关(wParam)

{

//移动光标以反映哪一个

//按箭头键。

case VK_LEFT: // 左箭头

pt.x -= repeat;

break;

case VK_RIGHT: // 右箭头

pt.x += repeat;

break;

case VK_UP: // 向上箭头

pt.y -= repeat;

break;

case VK_DOWN: //向下箭头

pt.y += repeat;

break;

默认:

return NULL;

}

repeat++; //增加重复计数

//将光标保留在客户区中。

GetClientRect(hwnd, &rc);

if (pt.x >= rc.right)

{

pt.x = rc.right - 1;

}

其他

{

if(pt.x {98??9796003} rc.left)

{

pt.x = rc.left;

}

}

if (pt.y >= rc.bottom)

pt.y = rc.bottom - 1;

其他

if(pt.y < rc.top)

pt.y = rc.top;

//将客户端坐标转换为屏幕坐标。

ClientToScreen(hwnd, &pt);

SetCursorPos(pt.x, pt.y);

break;

case WM_KEYUP:

repeat = 1; //清除重复计数

break;

}