Работа с мышью
Инициализация мыши, аппаратный и программный сброс ее драйвера. Оформление процедуры обработчика событий. Стандартные курсоры мыши, графические и текстовые. Функция определения положения курсора и его установки в заданную позицию при нажатии клавиши.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 13.08.2011 |
Размер файла | 35,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
26
Размещено на http://www.allbest.ru/
КОНТРОЛЬНАЯ РАБОТА
ПО ДИСЦИПЛИНЕ
«Вычислительные системы, сети и телекоммуникации»
Содержание
- ЗАДАНИЕ 1 Работа с мышью 3
- ЗАДАНИЕ 2 Стандартные курсоры мыши, графические и текстовые. 11
- СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 26
- ЗАДАНИЕ 1 Работа с мышью
Все общение с мышью в DOS выполняется через прерывание 33h, обработчик которого устанавливает драйвер мыши, загружаемый обычно при запуске системы. Современные драйверы поддерживают около 60 функций, позволяющих настраивать разрешение мыши, профили ускорений, виртуальные координаты, настраивать дополнительные обработчики событий и т.п. Большинство этих функций требуются редко, сейчас рассмотрим основные:
INT 33h, AX = 0 -- Инициализация мыши
Ввод: |
AX = 0000h |
|
Вывод: |
АХ = 0000h, если мышь или драйвер мыши не установленыАХ = FFFFh, если драйвер и мышь установленыВХ = число кнопок: 0002 или FFFF -- две0003 -- три0000 -- другое количество |
Выполняется аппаратный и программный сброс мыши и драйвера.
INT 33h, AX = 1 -- Показать курсор
Ввод: |
AX = 0001h |
INT 33h, AX = 2 -- Спрятать курсор
Ввод: |
AX = 0002h |
Драйвер мыши поддерживает внутренний счетчик, управляющий видимостью курсора мыши. Функция 2 уменьшает значение счетчика на единицу, а функция 1 увеличивает его, но только до значения 0. Если значение счетчика -- отрицательное число, он спрятан, если ноль -- показан. Это позволяет процедурам, использующим прямой вывод в видеопамять, вызывать функцию 2 в самом начале и 1 -- в самом конце, не заботясь о том, в каком состоянии был курсор мыши у вызвавшей эту процедуру программы.
INT 33h, AX = 3 -- Определить состояние мши
Ввод: |
AX = 0003h |
|
Вывод: |
ВХ = состояние кнопок: бит 0 -- нажата левая кнопкабит 1 -- нажата правая кнопкабит 2 -- нажата средняя кнопка СХ = Х-координатаDX = Y-координата |
Возвращаемые координаты совпадают с пиксельными координатами соответствующей точки на экране в большинстве графических режимов, кроме 04, 05, 0Dh, 13h, в которых Х-координату мыши нужно разделить на 2, чтобы получить номер столбца соответствующей точки на экране. В текстовых режимах обе координаты надо разделить на 8, чтобы получить номер строки и столбца соответственно.
В большинстве случаев эта функция не используется в программах, так как для того, чтобы реагировать на нажатие кнопки или перемещение мыши в заданную область, требуется вызывать это прерывание постоянно, что приводит к трате процессорного времени. Функции 5 (определить положение курсора при последнем нажатии кнопки), 6 (определить положение курсора при последнем отпускании кнопки) и 0Bh (определить расстояние, пройденное мышью) могут помочь оптимизировать работу программы, самостоятельно следящей за всеми передвижениями мыши, но гораздо эффективнее указать драйверу самому следить за ее передвижениями (чем он, собственно, и занимается постоянно) и передавать управление в программу, как только выполнится заранее определенное условие, например пользователь нажмет на левую кнопку мыши. Такой сервис обеспечивает функция 0Ch -- установить обработчик событий.
INT 33h, AX = 0Ch -- Установить обработчик событий
Ввод: |
AX = 000ChES:DX = адрес обработчикаСХ = условие вызова бит 0 -- любое перемещение мышибит 1 -- нажатие левой кнопкибит 2 -- отпускание левой кнопкибит 3 -- нажатие правой кнопкибит 4 -- отпускание правой кнопкибит 5 -- нажатие средней кнопкибит 6 -- отпускание средней кнопки СХ = 0000h -- отменить обработчик |
Обработчик событий должен быть оформлен, как дальняя процедура (то есть завершаться командой RETF). На входе в процедуру обработчика АХ содержит условие вызова, ВХ -- состояние кнопок, СХ, DX -- X- и Y-координаты курсора, SI, DI -- счетчики последнего перемещения по горизонтали и вертикали (единицы измерения для этих счетчиков -- мики, 1/200 дюйма), DS -- сегмент данных драйвера мыши. Перед завершением программы установленный обработчик событий должен быть обязательно удален (вызов функции 0Ch с СХ = 0), так как иначе при первом же выполнении условия управление будет передано по адресу в памяти, с которого начинался обработчик.
Функция 0Ch используется так часто, что у нее появилось несколько модификаций -- функция 14h, позволяющая установить одновременно три обработчика с разными условиями, и функция 18h, также позволяющая установить три обработчика и включающая в условие вызова состояние клавиш Shift, Ctrl и Alt. Воспользуемся обычной функцией 0Ch, чтобы написать простую программу для рисования.
; mousedr.asm
; Рисует на экране прямые линии с концами в позициях, указываемых мышью
;
.model tiny
.code
org 100h ; СОМ-файл
.186 ; для команды shr cx,3
start:
mov ax,12h
int 10h ; видеорежим 640x480
mov ax,0 ; инициализировать мышь
int 33h
mov ax,1 ; показать курсор мыши
int 33h
mov ax,000Ch ; установить обработчик событий мыши
mov cx,0002h ; событие - нажатие левой кнопки
mov dx,offset handler ; ES:DX - адрес обработчика
int 33h
mov ah,0 ; ожидание нажатия любой клавиши
int 16h
mov ax,000Ch
mov cx,0000h ; удалить обработчик событий мыши
int 33h
mov ax,3 ; текстовый режим
int 10h
ret ; конец программы
; Обработчик событий мыши: при первом нажатии выводит точку на экран,
; при каждом дальнейшем вызове проводит прямую линию от предыдущей
; точки к текущей
handler:
push 0A000h
pop es ; ES - начало видеопамяти
push cs
pop ds ; DS - сегмент кода и данных этой программы
push сх ; СХ (Х-координата) и
push dx ; DX (Y-координата) потребуются в конце
mov ax, 2 ; спрятать курсор мыши перед выводом на экран
int 33h
cmp word ptr previous_X,-1 ; если это первый вызов,
je first_point ; только вывести точку,
call line_bresenham ; иначе - провести прямую
exit_handler:
pop dx ; восстановить СХ и DX
pop сх
mov previous_X,cx ; и запомнить их как предыдущие
mov previous_Y,dx ; координаты
mov ax,1 ; показать курсор мыши
int 33h
retf ; выход из обработчика - команда RETF
first_point:
call putpixel1b ; вывод одной точки (при первом вызове)
jmp short exit_handler
; Процедура рисования прямой линии с использованием алгоритма Брезенхама
; Ввод: СХ, DX - X, Y конечной точки
; previous_X,previous_Y - X, Y начальной точки
line_bresenham:
mov ax, сх
sub ax,previous_X ; AX = длина проекции прямой на ось X
jns dx_pos ; если АХ отрицательный -
neg ax ; сменить его знак, причем
mov word ptr X_increment,1 ; координата X при выводе
jmp short dx_neg ; прямой будет расти,
dx_pos: mov word ptr X_increment,-1 ; а иначе - уменьшаться
dx_neg: mov bx,dx
sub bx,previous_Y ; BX = длина проекции прямой на ось Y
jns dy_pos ; если ВХ отрицательный -
neg bx ; сменить его знак, причем
mov word ptr Y_increment,1 ; координата Y при выводе
jmp short dy_neg ; прямой будет расти,
dy_pos: mov word ptr Y_increment,-1 ; а иначе - уменьшаться
dy_neg: shl ax,1 ; удвоить значения проекций,
shl bx,1 ; чтобы избежать работы с полуцелыми числами
call putpixel1b ; вывести первую точку (прямая рисуется от
; CX,DX к previous_X,previous_Y)
cmp ax,bx ; если проекция на ось X больше, чем на Y:
jna dx_le_dy
mov di,ax ; DI будет указывать, в какую сторону мы
shr di,1 ; отклонились от идеальной прямой
neg di ; оптимальное начальное значение DI:
add di,bx ; DI = 2 * dy - dx
cycle:
cmp ex,word ptr previous_X ; основной цикл выполняется,
je exit_bres ; пока Х не станет равно previous_X
cmp di,0 ; если DI > 0,
jl fractlt0
add dx,word ptr Y_increment ; перейти к следующему Y
sub di,ax ; и уменьшить DI на 2 * dx
fractlt0:
add cx,word ptr X_increment ; следующий Х (на каждом шаге)
add di,bx ; увеличить DI на 2 * dy
call putpixel1b ; вывести точку
jmp short cycle ; продолжить цикл
dx_le_dy: ; если проекция на ось Y больше, чем на X
mov di,bx
shr di,1
neg di ; оптимальное начальное значение DI:
add di,ax ; DI = 2 * dx - dy
cycle2:
cmp dx,word ptr previous_Y ; основной цикл выполняется,
je exit_bres ; пока Y не станет равным previous_Y,
cmp di,0 ; если DI > 0,
jl fractlt02
add cx,word ptr X_increment ; перейти к следующему X
sub di,bx ; и уменьшить DI на 2 * dy
fractlt02:
add dx,word ptr Y_increment ; следующий Y (на каждом шаге)
add di,ax ; увеличить DI на 2 * dy
call putpixel1b ; вывести точку
jmp short cycle2 ; продолжить цикл
exit_bres:
ret ; конец процедуры
; Процедура вывода точки на экран в режиме, использующем один бит для хранения одного пикселя.
; DХ = строка, СХ = столбец
; Все регистры сохраняются
putpixel1b:
pusha ; сохранить регистры
xor bx,bx
mov ax,dx ; AX = номер строки
imul ах,ах,80 ; АХ = номер строки * число байт в строке
push cx
shr сх,3 ; СХ = номер байта в строке
add ах,сх ; АХ = номер байта в видеопамяти
mov di,ax ; поместить его в SI и DI для команд
mov si,di ; строковой обработки
pop cx ; СХ снова содержит номер столбца
mov bx,0080h
and cx,07h ; последние три бита СХ =
; остаток от деления на 8 = номер бита в байте, считая справа налево
shr bx,cl ; теперь в BL установлен в 1 нужный бит
lods es:byte ptr some_label ; AL = байт из видеопамяти
or ax,bx ; установить выводимый бит в 1,
; чтобы стереть пиксель с экрана, эту команду OR можно заменить на
; not bx
; and ax,bx
; или лучше инициализировать ВХ не числом 0080h, а числом FF7Fh и использовать только and
stosb ; и вернуть байт на место
рора ; восстановить регистры
ret ; конец
previous_X dw -1 ; предыдущая Х-координата
previous_Y dw -1 ; предыдущая Y-координата
Y_increment dw -1 ; направление изменения Y
X_increment dw -1 ; направление изменения X
some_label: ; метка, используемая для переопределения
; сегмента-источника для lods с DS на ES
end start
ЗАДАНИЕ 2 Стандартные курсоры мыши, графические и текстовые
Исходный текст программы MSCURSOR (листинг ), демонстрирующую применение описанных выше функций. Программа инициализирует мышь, делает видимым курсор мыши и прячет курсор после того как пользователь нажмет любую клавишу.
Листинг Файл mscursor\mscursor.c
#include <dos.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
int nButtons;
union REGS rg;
printf("MSCURSOR, (c) A. Frolov, 1997\n");
// Инициализируем мышь
rg.x.ax = 0;
int86(0x33, &rg, &rg);
if(rg.x.bx == 0)
{
printf("Mouse not found");
return -1;
}
// Сохраняем количество клавиш
nButtons = rg.x.bx;
printf("Mouse type: ");
switch (nButtons)
{
case 2:
{
printf("2-button mouse\n");
break;
}
case 3:
{
printf("2-button Mouse Systems\n");
break;
}
case 0:
{
printf("Unknown type %d\n", nButtons);
break;
}
default:
{
printf("Unknown type %d\n", nButtons);
break;
}
}
// Включаем курсор и ожидаем, пока пользователь
// нажмет на клавишу
rg.x.ax = 1;
int86(0x33, &rg, &rg);
printf("Mouse cursor on. Press any key\n");
getch();
// Выключаем курсор
rg.x.ax = 2;
int86(0x33, &rg, &rg);
printf("Mouse cursor off. Press any key\n");
getch();
return 0;
}
Определить положение курсора
Функция 03h возвращает текущие координаты курсора мыши и состояние клавиш.
Регистры на входе: |
AX = 0003h |
|
Регистры на выходе: |
BX = состояние клавиш мыши; CX = координата X курсора; DX = координата Y курсора |
В зависимости от того, была ли нажата какая-либо клавиша мыши в момент вызова функции, в регистре BX могут быть установлены следующие флаги:
Установленный бит регистра BX |
Клавиша, которая была нажата |
|
0 |
Левая |
|
1 |
Правая |
|
2 |
Средняя |
Для графических режимов координаты располагаются в различных диапазонах, в зависимости от текущего режима видеоадаптера:
Размер экрана в пикселах |
Номер режима |
Диапазон координат по оси X |
Диапазон координат по оси Y |
|
320x200 |
4, 5 |
0 - 638 |
0 - 199 |
|
640x200 |
6 |
0 - 639 |
0 - 199 |
|
320x200 |
0Dh |
0 - 638 |
0 - 199 |
|
640x200 |
0Eh |
0 - 639 |
0 - 199 |
|
640x350 |
0Fh |
0 - 639 |
0 - 349 |
Программы, работающие в текстовом режиме, должны разделить полученные координаты на 8 (как координату X, так и координату Y).
Программа MSGCURS
Приведем исходный текст программы MSGCURS (листинг), которая запрашивает номер режима видеоадаптера, устанавливает его и динамически отображает координаты курсора, а также состояние клавиш мыши. После завершения работы программа восстанавливает первоначальный режим видеоадаптера.
Листинг Файл msgcurs\msgcurs.c
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
union REGS rg;
int main(void)
{
int i;
unsigned old_videomode, new_videomode;
char buf[20], *bufptr;
int nButtons;
// Определяем текущий видеорежим
rg.x.ax = 0x0f00;
int86(0x10, &rg, &rg);
old_videomode = rg.h.al;
// Устанавливаем новый видеорежим
buf[0] = 10;
printf("Enter new video mode: ");
bufptr = cgets(buf);
// Преобразуем введенное число к формату int
new_videomode = atoi(bufptr);
rg.h.ah = 0;
rg.h.al = new_videomode;
int86(0x10, &rg, &rg);
// Инициализируем мышь
rg.x.ax = 0;
int86(0x33, &rg, &rg);
if(rg.x.bx == 0)
{
printf("Mouse not found\n");
return -1;
}
// Сохраняем количество клавиш
nButtons = rg.x.bx;
printf("Mouse type: %d\n", nButtons);
// Включаем курсор
rg.x.ax = 1;
int86(0x33, &rg, &rg);
printf("Mouse cursor on. Press any key\n");
getch();
while(!kbhit())
{
rg.x.ax = 3;
int86(0x33, &rg, &rg);
printf("%2d x:%5d y:%5d",
rg.x.bx, rg.x.cx, rg.x.dx);
for(i=0; i<18; i++) printf("\b");
}
getch();
// Выключаем курсор
rg.x.ax = 2;
int86(0x33, &rg, &rg);
// Восстанавливаем режим видеоадаптера
rg.h.ah = 0;
rg.h.al = old_videomode;
int86(0x10, &rg, &rg);
return 0;
}
Заметим, что использование функции 03h - не самый лучший способ работы с мышью. Программа должна постоянно следить за координатами курсора или за состоянием клавиш. Это может привести к непроизводительным затратам процессорного времени на опрос состояния.
Позже мы рассмотрим другие способы определения состояния мыши.
Установить курсор
Обычно курсор мыши устанавливает не программа, а пользователь. Однако с помощью функции 04h программа тоже может установить курсор в заданную позицию.
Регистры на входе: |
AX = 0004h CX = новая координата X курсора; DX = новая координата Y курсора |
|
Регистры на выходе: |
Регистры не используются |
Для текстового режима устанавливаемые номера строки и столбца должны быть умножены на 8.
В том случае, когда программа пытается установить курсор в область, где курсор невидим (эта область задается функцией 10h), то она сможет это сделать. Курсор при этом исчезнет с экрана, что не всегда желательно.
Если область для перемещения курсора была ограничена при помощи функций 07h или 08h, то курсор будет вести себя следущим образом. При попытке установить курсор за границу области ограничения, он будет установлен в точку, которая находится внутри границы на минимальном расстоянии от точки, заданной при вызове функции.
Определить положение курсора при нажатии клавиши
Регистры на входе: |
AX = 0005h BX = клавиша, при нажатии которой запоминается состояние мыши: 0 - левая; 1 - правая; 2 - средняя |
|
Регистры на выходе: |
AX = состояние клавиш мыши; BX = количество нажатий на заданную клавишу. Это значение обнуляется после вызова функции; CX = координата курсора X; DX = координата курсора Y |
В зависимости от того, была ли нажата какая-либо клавиша мыши в момент вызова функции, в регистре AX могут быть установлены следующие флаги:
Установленный бит регистра AX |
Клавиша, которая была нажата |
|
0 |
Левая |
|
1 |
Правая |
|
2 |
Средняя |
В отличие от функции 03h эта функция возвращает программе не текущее состояние мыши, а запомненное в момент последнего нажатия на клавишу, заранее определенную при вызове функции. Она также возвращает количество нажатий на заданную клавишу, которое вы можете использовать для обнаружения двойных щелчков.
Определить положение курсора при отпускании клавиши
Функция 06h возвращает программе состояние мыши, запомненное в момент отпускания клавиши, которая была заранее определена при вызове функции. Она также возвращает количество отпусканий заданной клавиши.
Регистры на входе: |
AX = 0006h BX = клавиша, при отпускании которой запоминается состояние мыши: 0 - левая; 1 - правая; 2 - средняя |
|
Регистры на выходе: |
AX = состояние клавиш мыши; BX = количество нажатий на заданную клавишу. Это значение обнуляется после вызова функции; CX = координата курсора X; DX = координата курсора Y |
Формат регистра AX, определяющий состояние клавиш мыши, такой же как и для функции 05h.
Задать диапазон движения курсора по горизонтали
Функция 07h позволяет ограничить диапазон перемещений курсора мыши по горизонтали:
мышь драйвер курсор программный
Регистры на входе: |
AX = 0007h CX = минимальная координата X; DX = максимальная координата X |
|
Регистры на выходе: |
Регистры не используются |
Задать диапазон движения курсора по вертикали
Функция 08h позволяет ограничить диапазон перемещений курсора мыши по вертикали.
Регистры на входе: |
AX = 0008h CX = минимальная координата Y; DX = максимальная координата Y |
|
Регистры на выходе: |
Регистры не используются |
Задать форму курсора в графическом режиме
С помощью функции 09h программа, работающая в графическом режиме, может изменить форму курсора мыши и положение точки внутри изображения курсора, координаты которой используются в качестве координат курсора остальными функциями.
Регистры на входе: |
AX = 0009h BX = номер позиции точки-указателя графического курсора (от -16 до 16); CX = номер строки точки-указателя (от -16 до 16); ES:DX = указатель на растровое изображение курсора |
|
Регистры на выходе: |
Регистры не используются |
Регистры ES:DX указывают на область памяти размером 64 байт. Эта область состоит из двух массивов длиной по 32 байт. Первый массив представляет собой логическую маску размером 16х16 бит, которая накладывается на участок видеопамяти с использованием логической операции “И”. Второй массив - тоже маска размером 16х16 бит, но она накладывается с использованием логической операции “Исключающее ИЛИ”, инвертируя отдельные точки изображения.
Номера позиции и строки точки-указателя, устанавливаемые по умолчанию, равны 0 (BX=CX=0). Это соответствует верхней левой точке в изображении курсора. Значения BX=CX=15 соответствуют нижней правой точке.
Программа MSGFORM
Мы подготовили исходный текст программы MSGFORM, изменяющий форму курсора в графическом режиме (листинг ).
Листинг Файл msgform\msgform.c
// =====================================================
// Изменение формы курсора в графическом режиме
//#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
union REGS reg;
void ms_gform(int xt, int yt, char _far *form);
unsigned char form[64] =
{
// Массив маски по "И"
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255,
// Массив маски по "Исключающее ИЛИ"
127, 254, 127, 254, 127, 254, 127, 254, 127, 254,
127, 254, 127, 254, 0, 0,
0, 0, 127, 254, 127, 254, 127, 254, 127, 254, 127, 254,
127, 254, 127, 254
};
int main(void)
{
unsigned old_videomode, new_videomode;
char buf[20], *bufptr;
// Определяем текущий видеорежим
reg.x.ax = 0x0f00;
int86(0x10, ®, ®);
old_videomode = reg.h.al;
// Устанавливаем новый видеорежим
buf[0] = 10;
printf("Enter new video mode: ");
bufptr = cgets(buf);
new_videomode = atoi(bufptr);
reg.h.ah = 0;
reg.h.al = new_videomode;
int86(0x10, ®, ®);
// Инициализируем мышь
reg.x.ax = 0;
int86(0x33, ®, ®);
if(reg.x.bx == 0)
{
printf("Mouse not found\n");
return -1;
}
// Задаем новую форму для курсора мыши
ms_gform(0,0, &form[0]);
// Включаем курсор
reg.x.ax = 1;
int86(0x33, ®, ®);
getch();
reg.h.ah = 0;
reg.h.al = old_videomode;
int86(0x10, ®, ®);
return 0;
}
void ms_gform(int xt, int yt, char _far *form)
{
struct SREGS segregs;
reg.x.ax = 9;
reg.x.bx = xt;
reg.x.cx = yt;
reg.x.dx = FP_OFF(form);
segregs.es = FP_SEG(form);
int86x(0x33,®,®,&segregs);
}
Задать форму курсора в текстовом режиме
С помощью функции 0Ah программа может изменять форму курсора мыши в текстовом режиме.
Регистры на входе: |
AX = 000Ah BX = тип курсора: 0 - определяемый программно; 1 - определяемый аппаратно; CX = маска экрана (для BX=0) или начальная строка курсора (для BX=1); DX = маска курсора (для BX=0) или конечная строка курсора (для BX=1) |
|
Регистры на выходе: |
Регистры не используются |
В зависимости от содержимого регистра BX драйвер мыши использует курсор, определяемый аппаратными средствами, либо курсор, определяемый программно. По умолчанию используется “программный курсор”, который отображается в виде символа с инвертированным значением атрибута. Курсор, сформированный аппаратными средствами, выглядит аналогично обычному текстовому курсору, его форма - прямоугольник. Размер этого прямоугольника можно задавать при помощи регистров CX и DX.
Для курсора, определяемого программно, вначале выполняется операция логического “И” над содержимым видеопамяти в том месте, куда указывает курсор, и маской экрана. Затем выполняется операция “Исключающее ИЛИ” с маской курсора.
Младший байт масок соответствует коду ASCII символа, старший - это байт атрибута символа.
Значения, используемые по умолчанию - BX=7700h, CX=FFFFh.
Если вам надо изменить цвет курсора, не меняя его форму, задайте CX=00FFh, BX=xx00h, где xx определяет цвет (смотри описание формата байта атрибутов в 21 томе «Библиотеки системного программиста», который называется «Программирование видеоадаптеров»).
Исходный текст программы MSTFORM (листинг ), создающую курсор в виде вертикальной стрелки, направленной вверх, на синем фоне.
Листинг . Файл mstform\mstform.c
// =====================================================
// Изменение формы курсора в текстовом режиме
//
#include <dos.h>
#include <stdio.h>
#include <conio.h>
union REGS reg;
void ms_tform(int type, int mask1, int mask2);
int main(void)
{
// Инициализируем мышь
reg.x.ax = 0;
int86(0x33, ®, ®);
if(reg.x.bx == 0)
{
printf("Mouse not found\n");
return -1;
}
// Задаем новую форму для курсора мыши
ms_tform(0, 0, 0x1418);
// Включаем курсор
reg.x.ax = 1;
int86(0x33, ®, ®);
getch();
return 0;
}
void ms_tform(int type, int mask1, int mask2)
{
reg.x.ax = 0xA;
reg.x.bx = type;
reg.x.cx = mask1;
reg.x.dx = mask2;
int86(0x33,®,®);
}
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Бэрри Н. Компьютерные сети. Пер. с англ. - М.: БИНОМ. - 1995. - 400с.
Джамса К., Лалани С., Уикли С. Программирование в WWW для профессионалов. - Минск. - Попурри. - 1997. - 631 с.
Кент П. World Wide Web: Пер. с англ.. - М.: Компьютер. - 1996. - 311 с.
Кулаков Ю.А. Компьютерные сети. - Киев. - 1998. - 384 с.
Компьютерные сети. Принципы, технологии, протоколы/В.Г. Олифер, Н.А. Олифер. - СПб: Питер, 2001. - 672с.
Максимов Н.В., Партыка Т.Л., Попов И.И. Технические средства информатизации: Учебник. - М.: ФОРУМ: ИНФРА-М, 2005. - 576с.: ил. - (Профессиональное образование)
Милославская Н.Г., Толстой А.И. Интрасети: доступ в Internet. Защита: Учеб. пособие для вузов. - М.: ЮНИТИ - ДАНА, 200, 527с.
Колесников Internet: для пользователя. - К.: Издательская группа BHV, 2000.-304с.
Новомлинский Л. Интернет - торговля. Часть 1/ Сети и системы связи. 1998 - №8.
Новомлинский Л. Интернет - торговля. Часть 2/ Сети и системы связи. 1998 - №9.
Пятибратов А.П. Вычислительные машины, сети и телекоммуникации/ Пятибратов А.П., Гудыно Л.П. - М.: Финансы и статистика. - 1998. - 400 с.
Сеть Internet. Применение в науке и бизнесе/ Горностаев Ю.М. и др. - М.: Россия - 1994. - 136 с.
Сеть Internet./ Горностаев Ю.М. и др. - М.: Россия. - 1993. - 88 с.
Сорокин Л. Аукционы в Интернате - будущее электронной коммерции//Мир электронной коммерции. - 2000. - №1.
Информатика: Учебник. - 3-е перераб. изд. / Под ред. проф. Н.В. Макаровой. - М.: Финансы и статистика, 2000. - 768 с.: ил.
Размещено на Allbest.ru
Подобные документы
Исследование принципа действия компьютерной мыши. Изучение конструкции датчика перемещения мыши. Описания оптопарного координатного датчика в мыши с шаровым приводом. Анализ особенностей оптической светодиодной и лазерной мыши. Элементы управления мыши.
презентация [426,9 K], добавлен 18.06.2013Обработка курсора в PL/SQL. Объявление курсора и атрибуты курсора. Использование команд OPEN, FETCH и CLOSE. Исключительные ситуации в PL/SQL. Стандартные исключительные ситуации. Различные ситуации срабатывания триггера. Порядок активизации триггеров.
презентация [307,9 K], добавлен 14.02.2014Разнообразие выпускаемых устройств ввода. Основные устройствами ввода информации в компьютер: клавиатуры, мыши, трекболы, графические планшеты, сканеры и джойстики. Основные параметры клавиатур. Подключение мыши к компьютеру. Оптическая система сканера.
курсовая работа [4,5 M], добавлен 17.03.2011Сообщения мыши, работа с ней и ее функции. Основные типы и стили окон и их взаимодействие друг с другом. Статические элементы, кнопки, списки, редактор и полосы прокрутки как стандартные классы дочерних окон. Создание окон нестандартного вида и их цвет.
лекция [56,0 K], добавлен 24.06.2009Определение понятия манипулятора в компьютере как указательного устройства для ввода информации. Управление компьютером с помощью игрового джойстика, мыши, трекпойнта. Программное обеспечение и способы подключения мыши (инфракрасная- и радиосвязь).
презентация [356,0 K], добавлен 05.02.2012Принцип работы обычных дисководов для гибких дисков. Накопители на дискетах и жёстких дисках. Модемы и факс-модемы. Немного о мышиной "анатомии". Три способа подключения мыши. Устройства ввода: клавиатура, мыши, мониторы, модемы, трекболы, сканеры.
реферат [20,1 K], добавлен 17.06.2010Инициализация графического драйвера и режима. Функции доступа к видеопамяти. Подключение графической библиотеки. Инициализация графического режима. Включение драйвера, шрифтов в исполняемый файл. Рисование геометрических фигур. Вывод числовой информации.
лабораторная работа [77,2 K], добавлен 06.07.2009Список событий, которые имеют время наступления. Инициализация, визуализация, сохранение, восстановление событий. Функция проверки наличия событий, удовлетворяющих заданным требованиям. Создание пользовательского интерфейса. Форма создания нового события.
курсовая работа [1,9 M], добавлен 20.06.2012Механизм классов в C++. Инициализация внутреннего объекта с помощью конструктора. Управление доступом к классу. Защищенные члены класса. Графические средства компилятора Borland C 3.1. Библиотека стандартных шаблонов. Реализация и использование класса.
курсовая работа [2,7 M], добавлен 16.05.2012Функции системного блока, монитора, клавиатуры, мыши, принтера. Операционная система компьютера Microsoft Windows, офисные приложения. Работа с таблицами: элементы окна Excel, создание диаграммы, базы данных, их поиск и замена. Работа с мастером функций.
контрольная работа [578,5 K], добавлен 27.11.2010