На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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; // прерывание счета ясного повторения;

}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz