IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Глюк в tmt
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Арсений

Репутация: -  0  +


Здраствуйте. Не первый день пытаюсь подключить мышь к проге. Результат: Прикрепленное изображение. Пожалуйста, помогите разобраться с ошибкой. Заранее благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


1. Для начала неплохо бы указать версию TMT Pascal.
2. В поставке нет модуля images (и, кстати, компилятор ругается именно на него - или предупреждения мы принципиально игнормруем?).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Арсений

Репутация: -  0  +


1.tmt pascal v.3.9
2.images http://forum.sources.ru/index.php?showtopic=64755
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Ты всерьез считаешь, что модуль на Паскале можно подключить к скриншоту текста программы в GIF-файле?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Арсений

Репутация: -  0  +


На скрине сообщение и текст проги с глюком.

Добавлено через 1 мин.
Мне нужно узнать как подключить мышку БЕЗ глюка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Ты считаешь, что я буду набивать прогу с этого скрина?
Если уж задаешь вопросы, постарайся не создавать лишних трудностей тем, кто на эти вопросы может ответить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской
Реальное имя: Арсений

Репутация: -  0  +


Вот программа.

Сообщение отредактировано: Арсений -


Прикрепленные файлы
Прикрепленный файл  noname00.pas ( 448 байт ) Кол-во скачиваний: 266
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Результат аналогичный.
Но, похоже, глюк не в ТМТ, а в способе использования VESA-режимов.
Дело в том, что отображение мыши в VESA модах не гарантируется, поэтому прикладная программа должна заботиться об этом сама.
Другими словами, если хочешь, чтобы у тебя были функции ShowMouse и HideMouse, то писать их придется самому и без использования 33h прерывания.
И, в любом случае, рисовать мышь также придется самому.
Для демонстрации показываю лишь рисование точки по координатам мыши. Естественно, рисовать в этом месте можно что угодно, например, спрайт.

program test;
{images БГЪРН Я http://forum.sources.ru/index.php?showtopic=64755}
uses crt,images,graph,mous_ves,debug;
var s:sprite;
w,h:word;
x,y:smallint;
gb,gm:integer;
r:char;
MouX,MouY,MouC : integer;
begin
SetGraphMode($101);
InitMouse;
s:=loadbmp('test.bmp');
w:=spritewidth(s);
h:=SpriteHeight(s);
drawsprite(x,y,s);
repeat
MousePosition(MouX,MouY);
MouC := GetPixel(MouX,MouY);
putpixel(MouX,MouY,MouC xor 15);
delay(55);
putpixel(MouX,MouY,MouC);
until keypressed;
end.

Кроме того, стандартный модуль, кажется, переопределяет прерывание мыши, в результате чего в WinXP может быть конфликт. По крайней мере, у меня программа со стандартным модулем почему-то не реагировала на нажатия клавиш.
Я лично всегда при работе с VESA режимами пользовался следующим мышиным модулем:
Unit Mous_VES;

Interface

Uses DOS;

const
CURPOS = 1; { not used yet in this version }
LEFTPRESS = 2;
LEFTREL = 4;
RIGHTPRESS = 8;
RIGHTREL = 16;
MouKoef = 1; { уменьш-е чувст-ти мыши, для работы при шаге 8 }

var
Mouse_Reg : Registers;
Mouse_Installed : Boolean;
jjj : boolean;
Mouse_Error : Word;

function InitMouse : Word;
{ Function 0 - Initialize mouse software and hardware }

function MousePosition(var MouseX,MouseY : integer) : Word;
{ function 3 - return mouse position and button status }

procedure setmouseposition(mousex, mousey: Word);
{ function 4 - sets mouse position }

function mousepress(button: Word;
var count, lastx, lasty: Word): Word;
{ function 5 - gets button press information }

function mouserelease(button: Word;
var count, lastx, lasty: Word): Word;
{ function 6 - gets button release information }

procedure setmousexy(x1,y1,x2,y2: Word);
{ functions 7 and 8 - sets min/max values for horizontal/vertical }

procedure SetPixeltoMickey(Horiz,Verti : Word);
{ function 15 - sets the mickey to pixel ratio }

procedure SetMouseSensitivity(Horiz,Verti,Bound : Word);
{ function 1a - sets the mickey to pixel ratio }

procedure GetMouseSensitivity(var Horiz,Verti,Bound : Word);
{ function 1b - gets the mickey to pixel ratio }

implementation

function InitMouse : Word;
{ Function 0 - Initialize mouse software and hardware }
begin
with Mouse_Reg do
Ax := 0;
Intr($33,Mouse_Reg);
InitMouse := Mouse_Reg.Ax;
end;

function MousePosition(var MouseX,MouseY : integer) : Word;
{ function 3 - return mouse position and button status }
begin
Mouse_Reg.Ax := 3;
Intr($33,Mouse_Reg);
with Mouse_Reg do begin
MouseX := Cx div MouKoef;
MouseY := Dx div MouKoef;
MousePosition := Bx;
end;
end;

procedure setmouseposition(mousex, mousey: word);
{ function 4 - sets mouse position }
begin
Mouse_Reg.ax:=4;
Mouse_Reg.cx:=mousex * MouKoef;
Mouse_Reg.dx:=mousey * MouKoef;
intr($33,Mouse_Reg);
end;

function mousepress(button: Word;
var count, lastx, lasty: Word): Word;
{ function 5 - gets button press information }
begin
Mouse_Reg.ax:=5;
Mouse_Reg.bx:=button;
intr($33,Mouse_Reg);;
mousepress:=Mouse_Reg.ax;
count:=Mouse_Reg.bx;
lastx:=Mouse_Reg.cx div MouKoef;
lasty:=Mouse_Reg.dx div MouKoef;
end;

function mouserelease(button: Word;
var count, lastx, lasty: Word): Word;
{ function 6 - gets button release information }
begin
Mouse_Reg.ax:=6;
Mouse_Reg.bx:=button;
intr($33,Mouse_Reg);;
mouserelease:=Mouse_Reg.ax;
count:=Mouse_Reg.bx;
lastx:=Mouse_Reg.cx div MouKoef;
lasty:=Mouse_Reg.dx div MouKoef;
end;

procedure setmousexy(x1,y1,x2,y2: Word);
{ functions 7 and 8 - sets min/max values for horizontal/vertical }
begin
Mouse_Reg.ax:=7;
Mouse_Reg.cx:=x1 * MouKoef;
Mouse_Reg.dx:=x2 * MouKoef;
intr($33,Mouse_Reg);
Mouse_Reg.ax:=8;
Mouse_Reg.cx:=y1 * MouKoef;
Mouse_Reg.dx:=y2 * MouKoef;
intr($33,Mouse_Reg);
end;

procedure SetPixeltoMickey(Horiz,Verti : Word);
{ function 15 - sets the mickey to pixel ratio }

begin
with Mouse_Reg do begin
Ax := 15;
Cx := Horiz;
Dx := Verti;
end;
Intr($33,Mouse_Reg)
end;

procedure SetMouseSensitivity(Horiz,Verti,Bound : Word);
{ function 1a - sets the mickey to pixel ratio }

begin
with Mouse_Reg do begin
Ax := $1a;
Bx := Horiz;
Cx := Verti;
Dx := Bound;
end;
Intr($33,Mouse_Reg);
end;

procedure GetMouseSensitivity(var Horiz,Verti,Bound : Word);
{ function 1b - gets the mickey to pixel ratio }

begin
Mouse_Reg.Ax := $1b;
Intr($33,Mouse_Reg);
with Mouse_Reg do begin
Horiz := Bx;
Verti := Cx;
Bound := Dx;
end;
end;

var
h,v,b,b1:word;
OldHoriz, OldVerti,OldBound : word;
{ f:text;}
ExitSave:pointer;

procedure MyExit; { дополнительная процедура при выходе в DOS }
begin
SetMouseSensitivity(OldHoriz,OldVerti,OldBound);
ExitProc:=ExitSave;
writeln('Деициализация модуля Mous_ves X - ',OldHoriz,', Y - ',OldVerti,', Bound - ',OldBound);
end;

begin
ExitSave:=ExitProc; {переопределение процедуры выхода}
ExitProc:=@MyExit;
writeln('Инициализация модуля Mous_ves (начало)');
Mouse_Error := InitMouse;
Mouse_Installed := Mouse_Error = 65535;
GetMouseSensitivity(OldHoriz,OldVerti,OldBound);
writeln('Mouse sensitivity: X - ',OldHoriz,', Y - ',OldVerti,', Bound - ',OldBound);
end.



Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.10.2020 12:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name