Здавалка
Главная | Обратная связь

Використання модуля mouse



Питання для вивчення:

1. Функції роботи з модулем мишки.

 

Функції роботи з модулем мишки. У цьому модулі зібрані процедури і функції, які забезпечують роботу пристрою введення типу миша:

1. {Наступний тип використовується для визначення елементів, обираних мишею (см.SetMouseOption)}

type

MouseItemType = record

X1, Y1, X2, Y2: Integer; {Координати області}

Butt: Word; {Умови дзвінок}

Key: Word {Скан-код клавіші}

end;

2. {Тип MouseHandlerType визначає процедуру обробки подій від миші}

type

MouseHandlerType = Procedure (Mask, Buttons, X, Y, DX, DY: Integer);

{Константи вибору кнопок миші}

const

LeftButton = 1; {Ліва кнопка}

RightButton = 2; {Права кнопка}

CenterButton = 4; {Середня кнопка}

AnyButton = 7; {Будь кнопка}

{Коефіцієнти перерахунку віртуальних координат в текстові}

const

TextRatioX: Byte = 8;

TextRatioY: Byte = 8;

3.Ініціація миші

Function IsMouse: Boolean;

{Повертає TRUE, якщо миша доступна}

Function InitMouse: Boolean;

{Ініціація миші}

Procedure SetMousePage (Page: Byte);

{Встановлює сторінку для покажчика миші}

Function GetMousePage: Byte;

{Повертає номер сторінки з покажчиком}

Procedure SetStepToPixel (Hor, Ver: Integer);

{Встановлює чутливість миші}

Procedure GetStepToPixel (var Hor, Ver: Integer);

{Повертає чутливість миші}

Procedure SetDoubleSpeed (Speed: Word);

{Встановлює поріг подвоєння швидкості переміщення покажчика}

Function GetDoubleSpeed: Word;

{Повертає поріг подвоєння швидкості}

4. Координати

Function MouseTextCooX (X: Integer): Byte;

{Повертає текстову координату по заданій віртуальної}

Function MouseTextCooY (Y: Integer): Byte;

{Повертає текстову координату по заданій віртуальної}

Function MouseGraphCooX (X: Byte): Integer;

{Повертає віртуальну координату по заданій текстовій}

Function MouseGraphCooY (Y: Byte): Integer;

{Повертає віртуальну координату по заданій текстовій}

Procedure MouseWhereXY (var X, Y: Integer);

{Повертає віртуальні координати миші}

Procedure MouseGotoXY (X, Y: Integer);

{Перекладає курсор миші в нове положення X, Y - віртуальні координати}

Function MouseWhereX: Byte;

{Повертає горизонтальну текстову координату}

Function MouseWhereY: Byte;

{Повертає вертикальну текстову координату}

Function MouseIn (X1, Y1, X2, Y2: Integer): Boolean;

{Повертає TRUE, якщо покажчик знаходиться в заданому прямокутнику}

5. Стан кнопок

Function NumButton: Byte;

{Повертає кількість кнопок миші}

Procedure GetMouseState (var Butt, X, Y: Integer);

{Повертає поточний стан миші: BUTT - прапор стану кнопок; X, Y - поточні віртуальні координати}

Function MousePressed: Boolean;

{Повертає TRUE, якщо натиснута кнопка}

Procedure MouseButtPressed (Butt: Integer;

var Stat, Count, X, Y: Integer);

{Повертає інформацію про натиснутій клавіші:

BUTT - прапор вибору клавіші;

STAT - стан клавіш;

COUNT - кількість натискань, X, Y — координати}

Procedure MouseButtReleased (Butt: Integer; var Stat, Count, X, Y: Integer);

{Повертає інформацію про відпущеної клавіші: BUTT - прапор вибору клавіші; STAT - стан клавіш; COUNT - кількість відпускання; X, Y — координати}

6.Вікна

Procedure MouseWindow (X1, Y1, X2, Y2: Integer);

{Задає координати області переміщення покажчика. X1 ... Y2 - віртуальні координати}

Procedure MouseScreen;

{Встановлює вікно на весь екран}

Форма покажчика

Procedure ShowMouse;

{Показати покажчик миші}

Procedure HideMouse;

{Прибрати покажчик миші}

Procedure MouseTextCursor (ScrMask, CurMask: Word);

{Встановлює новий вид текстового покажчика}

Procedure MouseBlink (YUp, YDn: Byte);

{Задає апаратний курсор потрібного розміру}

Procedure MouseGraphCursor (var ScrCurMask; X, Y: Byte);

{Задає вид графічного покажчика}

7.Збереження / відновлення стану

Function MouseBuffSize: Word;

{Повертає довжину буфера для збереження параметрів}

Procedure SaveMouse (var Buff);

{Зберігає в буфері поточний стан миші}

Procedure RestoreMouse (var Buff);

{Відновлює збережений стан миші}

Емуляція клавіатури

Procedure SetMouseItem (NItem: Byte; var Items);

{Встановлює елементи для вибору мишею:

NItem - кількість елементів;

Items - array [1 .. NItem] of MouseItemType;

Старі установки скидаються}

Procedure AddMouseItem (Item: MouseItemType);

{Додає ще один елемент для вибору мишею.

Старі установки зберігаються}

Procedure ClearMouseItems;

{Скидає раніше встановлені елементи}

Procedure GetMouseItem (var NItem: Byte; var Items);

{Повертає встановлені елементи}

Function KeyOrMousePressed: Boolean;

{Повертає TRUE, якщо натиснута клавіша чи активна миша}

Function ReadKeyOrMouse: Char;

{Повертає символ натиснутою клавіші або вибраної опції}

8. Обробка подій від миші

Procedure SetMouseHandler (Mask: Word; Proc: MouseHandlerType);

{Встановлює адресу та умови виклику обробника}

Procedure ChangeMouseHandler (Mask: Word; Proc: MouseHandlerType;

var OldMask: Word; var OldProc: Pointer);

{Замінює старий обробник новим}

Procedure ClearMouseHandler;

{Видаляє обробник подій}

9. Ініціація миші

Uses DOS, CRT;

type

MouseItems = array [1 .. 2 * MaxInt div

SizeOf (MouseItemType)] of MouseItemType;

PMouseIt = ^ MouseItems;

const

MousePresent: Boolean = False; {Ознака наявності миші}

ItemsList: PMouseIt = NIL; {Масив елементів вибору}

NMouseItem: Byte = 0; {Кількість елементів вибору}

MouseVisible: Boolean = False; {Ознака видимого покажчика}

x1m: Integer = 0; {Координати області}

y1m: Integer = 0; {переміщення покажчика}

x2m: Integer = 639;

y2m: Integer = 199;

Speed2: Word = 128; {Поріг подвоєння швидкості}

VerRat: Integer = 8; {Чутливість миші}

HorRat: Integer = 8;

NButton: Byte = 0; {Кількість кнопок миші}

var

Reg: registers;

Function IsMouse: Boolean;

{Повертає TRUE, якщо миша доступна}

var

p: Pointer;

k, x, y: Integer;

Is: Boolean;

begin

if NButton = 0 then

begin

GetIntVec ($ 33, p);

Is: = p <> NIL;

if Is then with Reg do

begin

ax: = $ 3;

bx: = $ FFFF;

Intr ($ 33, Reg);

Is: = bx <> $ FFFF

end;

MousePresent: = Is

end;

IsMouse: = MousePresent

end;

Питання для контролю вивченого матеріалу:

Опрацюйте матеріал, розберіться у властивостях мишки.

Література:

Turbo Pascal/ стор.А.Немрюгин. – СПб: Издательство «Питер», 2000. – 496 с.: ил., стор. 250-253

Урок № 51

(згідно робочої навчальної програми)







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.