- •Программирование устройств ввода информации в эвм
- •Программирование устройств ввода информации в эвм
- •1. Общие указания по выполнению работы
- •1.2. Содержание работы
- •2. Домашнее задание
- •2.1. Краткие теоретические сведения
- •Функции Win32 api для клавиатуры и мыши
- •Получение типа клавиатуры и количества функциональных клавиш
- •Определение скорости перемещения курсора
- •Пример гашения курсора
- •Реверсирование кнопок мыши
- •Ограничение перемещения курсора
- •Установка позиции курсора мыши
- •Задание скорости перемещения курсора
- •3. Лабораторное задание
- •3.1. Порядок выполнения лабораторной работы
- •3.2. Указания по оформлению отчета
- •Библиографический список
- •Содержание
- •1. Общие указания по выполнению работы………………………….1
- •Программирование устройств ввода информации в эвм
Пример гашения курсора
Если свойство Checked компоненты CheckBox1 равно true, то курсор гасится. Иначе - восстанавливается.
TCheckBox *CheckBox1; void main () { if (CheckBox1->Checked) while (ShowCursor(false)>=0);// гарантированное гашение курсора else while (ShowCursor(true)<0);// гарантированное восстановление курсора }
Реверсирование кнопок мыши
Если кнопки били реверсированы, то их назначение восстанавливается. Иначе - кнопки реверсируются.
void main (){SwapMouseButton(!GetSystemMetrics(SM_SWAPBUTTON));}
Ограничение перемещения курсора
Если свойство Checked компоненты CheckBox1 равно true, то область перемещения курсора мыши ограничена окном приложения. Иначе - перемещение курсора разрешено по всему экрану.
void main () { RECT sqare; if (CheckBox1->Checked) {sqare.left=Left; sqare.top=Top; sqare.right=Left+Width; sqare.bottom=Top+Height; ClipCursor(&sqare);} else {sqare.left=0; sqare.top=0; sqare.right=GetSystemMetrics(SM_CXSCREEN); - sqare.bottom=GetSystemMetrics(SM_CYSCREEN); ClipCursor(&sqare);} }
Установка позиции курсора мыши
Значение новой позиции курсора берется из свойства Text компонент Edit1 и Edit2.
void main (){SetCursorPos(atoi(Edit1->Text.c_str()),atoi(Edit2->Text.c_str()));}
Задание скорости перемещения курсора
Шкала компоненты TrackBar1 устанавливает одно из семи значений скорости мыши.
TTrackBar *TrackBar1; void main () { int mousePos[7][3]={{0,0,0},{10,0,1},{7,0,1},{4,0,1},{4,12,2},{4,9,2},{4,6,2}}; int lpiMouse[3]; lpiMouse[0]=mousePos[TrackBar1->Position][0]; lpiMouse[1]=mousePos[TrackBar1->Position][1]; lpiMouse[2]=mousePos[TrackBar1->Position][2]; SystemParametersInfo(SPI_SETMOUSE,0,lpiMouse,SPIF_SENDWININICHANGE); }
3. Лабораторное задание
3.1. Порядок выполнения лабораторной работы
В лабораторной работе требуется разработать программное приложение, реализующее функции управления устройствами ручного ввода ЭВМ с помощью функций WIN32API, согласно варианту задания. Варианты задания приведены в таблице.
Варианты заданий
номер варианта |
информация о клавиатуре |
информация о мыше |
управляющие функции |
|||||||||||
getkeyboardtype |
getkeyboardstate |
getkeystate |
getasynckeystate |
getcursorpos |
getkeyboardstate |
getsystemmetrics |
systemparametersinfo |
setkeyboardstate |
showcursor |
swapmousebutton |
clipcursor |
setcursorpos |
systemparametersinfo |
|
1 |
+ |
+ |
|
+ |
+ |
|
|
|
+ |
+ |
+ |
|
|
|
2 |
|
+ |
+ |
|
|
+ |
+ |
|
|
+ |
+ |
+ |
|
|
3 |
+ |
|
+ |
+ |
|
|
|
+ |
|
|
+ |
+ |
+ |
|
4 |
+ |
+ |
|
|
+ |
+ |
|
|
|
|
|
+ |
+ |
+ |
5 |
|
+ |
+ |
|
|
|
+ |
+ |
+ |
|
|
|
+ |
+ |