Використання модуля 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 Все права принадлежат авторам размещенных материалов.
|