|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Using the Keyboard to Move the Cursor
Because Windows does not require a mouse, an application should be able to simulate mouse actions with the keyboard. The following example shows how to achieve this, by using the GetCursorPos and SetCursorPos functions, and by processing input from the arrow keys.
HCURSOR hCurs1, hCurs2; // cursor handles POINT pt; // cursor location RECT rc; // client area coordinates static int repeat = 1; // repeat key counter // // Other declarations and initialization. // switch (message) { // // Process other messages. // case WM_KEYDOWN: if (wParam != VK_LEFT && wParam != VK_RIGHT && wParam != VK_UP && wParam != VK_DOWN) { break;
} GetCursorPos(&pt); // Convert screen coordinates to client coordinates. ScreenToClient(hwnd, &pt); switch (wParam) { // Move the cursor to reflect which // arrow keys are pressed. case VK_LEFT: // left arrow pt.x -= repeat; break; case VK_RIGHT: // right arrow pt.x += repeat;
break; case VK_UP: // up arrow pt.y -= repeat; break; case VK_DOWN: // down arrow pt.y += repeat; break; default: return NULL; } repeat++; // increment repeat count // Keep the cursor in the client area. GetClientRect(hwnd, &rc);
if (pt.x >= rc.right) { pt.x = rc.right - 1; } else { if (pt.x < rc.left) { pt.x = rc.left; } } if (pt.y >= rc.bottom) pt.y = rc.bottom - 1; else if (pt.y < rc.top) pt.y = rc.top; // Convert client coordinates to screen coordinates. ClientToScreen(hwnd, &pt);
SetCursorPos(pt.x, pt.y); break; case WM_KEYUP: repeat = 1; // clear repeat count break; }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Использование Клавиатуры, чтобы Перемещать Курсор
Поскольку Окно не требует мышь, приложение должно быть способным сымитировать действия мыши с клавиатурой. Следующий пример показывает как, чтобы достигать это, используя GetCursorPos и функции SetCursorPos, и обрабатывая вклад с клавиш позиционирования.
HCURSOR hCurs1, hCurs2; // ручки курсора ТОЧКА пт; // позиция курсора RECT rc; // область клиента координирует статическое int повторение = 1; // ключевой счетчик повторения // // Другие декларации и инициализация. // ключ (сообщение) { // // Процесс другие сообщения. // случай WM_KEYDOWN: если (wParam != VK_LEFT && wParam != VK_RIGHT && wParam != VK_UP && wParam != VK_DOWN) { прерывание;
} GetCursorPos(&pt); // Экранные координаты Преобразования в координаты клиента. ScreenToClient(hwnd, &ПТ); ключ (wParam) { // Перемещение курсор, чтобы отражать какое // клавиши позиционирования нажаты. случай VK_LEFT: // левая стрела pt.x -= повторение; прерывание; случай VK_RIGHT: // стрела права pt.x += повторение;
прерывание; случай VK_UP: // по стреле pt.y -= повторение; прерывание; случай VK_DOWN: // вниз стрела pt.y += повторение; прерывание; невыполнение: обратный НЕДЕЙСТВИТЕЛЬНЫЙ; } повторение++; // счет повторения приращения // Держите курсор в области клиента. GetClientRect(hwnd, &rc);
если (pt.x >= rc.right) { pt.x = rc.right - 1; } еще { если (pt.x < rc.left) { rc.left pt.x =; } } если (pt.y >= rc.bottom) pt.y = rc.bottom - 1; еще если (pt.y < rc.top) rc.top pt.y =; // Координаты клиента Преобразования, чтобы отгораживать координаты. ClientToScreen(hwnd, &ПТ);
SetCursorPos(pt.x, pt.y); прерывание; случай WM_KEYUP: повторение = 1; // прерывание счета ясного повторения; }
|
|
|
|
| |