Проблема с мышью
codenet.ru, но он дает только "вылет" из программы, хотя и по событию от мыши.:confused: Вот что я использовал для установки обработчика:
const
MOUSE_MOVE_MASK =$01;
MOUSE_LBUTTON_PRESS =$02;
MOUSE_LBUTTON_RELEASE=$04;
MOUSE_RBUTTON_PRESS =$08;
MOUSE_RBUTTON_RELEASE=$10;
MOUSE_MBUTTON_PRESS =$20;
MOUSE_MBUTTON_RELEASE=$40;
MOUSE_ALL_EVENTS =$7F;
type MouseHandler= procedure;
procedure Yes;far;
begin
writeln('yes');
end;
function ResetMouse:word;
var res1,res2:word;
begin
asm
mov ax,0000h
int 33h
mov res1,ax
mov res2,bx
end;
if res1<>$FFFF then
begin
ResetMouse:=0;
exit;
end;
ResetMouse:=res2;
end;
procedure SetMouseHandler(h:MouseHandler;mask:word);assembler;
asm
push es
push dx
mov ax,000Ch
mov cx,mask
les dx,h
int 33h
pop dx
pop es
end;
procedure RecoveMouseHandler;assembler;
asm
mov ax,000Ch
mov ax,0Ch
mov cx,0h
int 33h
end;
begin
ResetMouse;
SetMouseHandler(Yes,MOUSE_LBUTTON_PRESS);
repeat
until false;
RecoveMouseHandler;
end.
Буду благодарен за любые ссылки по этой теме и по способу быстрого вывода курсора(в этих режимах он не работает).
Необходим модуль для "обработки" мыши на Pascal, с возможностью работы в режимах VESA hicolor/truecolor с высокими разрешениями.Я написал юнит на примере
const
MOUSE_MOVE_MASK =$01;
MOUSE_LBUTTON_PRESS =$02;
MOUSE_LBUTTON_RELEASE=$04;
MOUSE_RBUTTON_PRESS =$08;
MOUSE_RBUTTON_RELEASE=$10;
MOUSE_MBUTTON_PRESS =$20;
MOUSE_MBUTTON_RELEASE=$40;
MOUSE_ALL_EVENTS =$7F;
type MouseHandler= procedure;
procedure Yes;far;
begin
writeln('yes');
end;
function ResetMouse:word;
var res1,res2:word;
begin
asm
mov ax,0000h
int 33h
mov res1,ax
mov res2,bx
end;
if res1<>$FFFF then
begin
ResetMouse:=0;
exit;
end;
ResetMouse:=res2;
end;
procedure SetMouseHandler(h:MouseHandler;mask:word);assembler;
asm
push es
push dx
mov ax,000Ch
mov cx,mask
les dx,h
int 33h
pop dx
pop es
end;
procedure RecoveMouseHandler;assembler;
asm
mov ax,000Ch
mov ax,0Ch
mov cx,0h
int 33h
end;
begin
ResetMouse;
SetMouseHandler(Yes,MOUSE_LBUTTON_PRESS);
repeat
until false;
RecoveMouseHandler;
end.
Буду благодарен за любые ссылки по этой теме и по способу быстрого вывода курсора(в этих режимах он не работает).
чего то ты перемудрил с азмом, я не специалист по паскалю, но не проще ли это все через винапи провернуть?
Через ППИ конечно проще Ж), только вот я пишу курсовой по ОП на 16-битном Турбо Паскале. Причем не в стандартном видео режиме. А 16-битного ППИ я вообще незнаю.
Ну тык Yes() то твоя выполняется? Вставь туда не writeln() а beep() какой-нить, услышишь. Так надежнее.
Что конкретно не работает? Помоему все что написано работает.