Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЫШЬ_1.doc
Скачиваний:
22
Добавлен:
24.08.2019
Размер:
501.76 Кб
Скачать

Задание

Исполнить программу, которая инициализирует мышь, делает видимым курсор мыши и "прячет" курсор после нажатия на любую клавишу:

#include <stdio.h>

#include <conio.h>

#include "sysp.h"

void main() {

int botm;

// Инициализируем мышь, определяем количество клавиш

if(!ms_init(&botm)) {

printf("\nМышь не установлена");

exit(-1);

}

printf("\nУстановлена мышь: ");

switch (botm) {

case 2:

printf("двухклавишная"); break;

case 3:

printf("трехклавишная, системы Mouse Systems");

break;

case 0:

default:

printf("неизвестной системы"); break;

}

// Включаем курсор и ожидаем нажатия на клавишу

printf("\n\nКурсор мыши включен, "

"для выключения нажмите любую клавишу");

ms_on();

getch();

// Выключаем курсор

ms_off();

printf("\nКурсор выключен, "

"для завершения нажмите любую клавишу");

getch();

Задание 3

Исполнить программу, которая запрашивает номер видеорежима, устанавливает его и динамически отображает координаты курсора и состояние клавиш мыши. После завершения работы программа восстанавливает первоначальный видеорежим:

#include <dos.h>

#include <stdio.h>

#include <conio.h>

#include "sysp.h"

union REGS reg;

void main() {

int botm, i;

MOUSE_STATE state;

unsigned old_videomode, new_videomode;

char buf[20], *bufptr;

// Определяем текущий видеорежим

reg.x.ax = 0x0f00;

int86(0x10, &reg, &reg);

old_videomode = reg.h.al;

// Устанавливаем новый видеорежим:

// Устанавливаем максимально допустимую длину строки

buf[0] = 10;

printf("\nВведите десятичный номер видеорежима: ");

bufptr = cgets(buf);

// Преобразуем введенное число к формату int

new_videomode = atoi(bufptr);

reg.h.ah = 0;

reg.h.al = new_videomode;

int86(0x10, &reg, &reg);

// Инициализируем мышь, определяем количество клавиш

if(!ms_init(&botm)) {

printf("\nМышь не установлена");

exit(-1);

}

printf("\nУстановлена мышь: ");

switch (botm) {

case 2:

printf("двухклавишная"); break;

case 3:

printf("трехклавишная, системы Mouse Systems");

break;

case 0:

default:

printf("неизвестной системы"); break;

}

printf("\n\nСостояние мыши:\n\n");

// Включаем курсор

ms_on();

while(!kbhit()) {

ms_query(&state);

printf("%2d x:%5d y:%5d",

state.bottoms,

state.x,

state.y);

for(i=0;i<18;i++) printf("\b");

}

getch();

ms_off();

reg.h.ah = 0;

reg.h.al = old_videomode;

int86(0x10, &reg, &reg);

}

Замечание: использование функции 03h - не самый лучший способ работы с мышью. Программа должна постоянно следить за координатами курсора или за состоянием клавиш. Это может привести к непроизводительным затратам процессорного времени на опрос состояния.