_asm {
' mov ax, word ptr mode
int 10h
}
}
#ifdef__WATCOMC_ #pragma off (check_stack) #pragma off (unreferenced) #endif
void cdecl far waitPress (int mask, int button, int x, int у )
if ( mask & MOUSE_RBUTTON_PRESS ) doneFlag = 1;
#ifdef___WATCOMC_ #pragma on (check_stack) #pragma on (unreferenced) #endif
main ()
Point p ( 0, 0 );
Компьютерная графика. Полигональные модели о
л.
setVideoMode (0x12); resetMouse О; showMouseCursor (); setMouseShape ( cursor ); setMouseHandler ( waitPress ); moveMouseCursor ( p );
while ( IdoneFlag ) . » .
hideMouseCursor (); removeMouseHandler (); setVideoMode ( 3 );
}
Если вы хотите работать с мышью в защищенном режиме DPMI32, то это приводит к некоторым осложнениям. Обычно DPMI-сервер предоставляет интерфейс драйверу мыши, но использование 32-битового защищенного режима вносит свои сложности. Ниже приводится файл, реализующий описанные выше функции для защищенного режима компилятора Watcom.
// File mouse32.cpp
//
// This file provides mouse interface for DPMI32 for Watcom compiler //
#include <stdio.h> #include <dos.h> #include <i86.h> #include "mouse.h"
static MouseHandler curHandler = NULL;
CursorShape :: CursorShape ( unsigned short * aMask, unsigned short * xMask,
const Point& p ) : hotSpot ( p )
{
for ( register int i = 0; i < 16; i++ ) {
andMask [i] = aMask [i]; xorMask [i] = xMask [i];
}
}
//У///////////////////////////////////////////////////////////////// int resetMouse ()
{
union REGS inRegs, outRegs; inRegs.w.ax = 0;
int386 ( 0x33, &inRegs, &outRegs ); return outRegs.w.ax == OxFFFF;
}
void showMouseCursor () {
union REGS inRegs, outRegs;
4. Работа с основными графическими устройствам
jnRegs.w.ax = 1;
int386 ( 0x33, &inRegs, &outRegs );
}
void hideMouseCursor ()
^ union REGS inRegs, outRegs; jnRegs.w.ax = 2;
int386 ( 0x33, &inRegs, &outRegs );
}
void readMouseState ( MouseState& s ) {
union REGS inRegs, outRegs; inRegs. w.ax = 3;
int386 ( 0x33, &inRegs, &outRegs );