可以。你可以通过中断33H调用鼠标服务程序。表14.13列出了中断33H中最常用的鼠标服务程序。
表14.13鼠标中断服务
--------------------------------------------------------------------------
功能号 描 述
--------------------------------------------------------------------------
0 初始化鼠标;当前可见则隐藏它
1 显示鼠标
2 隐藏鼠标
3 获得鼠标位置
4 设置鼠标位置
6 检查鼠标按钮是否被按下
7 设置鼠标的水平限制值
8 设置鼠标的垂直限制值
9 设置图形模式鼠标形状
10 设置文本模式鼠标风格
11 获得鼠标的移动步值
---------------------------------------------------------------------------
下面的例子通过上表中的一些鼠标服务程序来控制一个文本模式的鼠标:
# include <stdlib.h>
# include <dos.h>
main()
{
union REGS regs;
printf("Initializing Mouse. . . ") ;
regs. x. ax = 0;
int86(0x33, ®s, ®s);
printf("\nShowing Mouse. . . ") ;
regs. x.ax = 1;
int86(0x33, ®s, ®s);
printf ("\nMove mouse around. Press any key to quit. . . ") ;
getch() ;
printf ("\nHiding Mouse. . . " ) ;
regs. x. ax = 2;
int86(0x33, ®s, ®s);
printf("\nDone\n");
}
当运行这个程序时,屏幕上会出现一个闪烁的可以移动的块状光标。无论什么时候,你都可以通过函数3向鼠标处理程序询问鼠标的位置。实际上,笔者用表14.13中的函数编写了一整套鼠标库函数,并且在笔者的许多使用文本模式鼠标的程序中使用了这套函数。
为了使用上表中的函数,你必须安装一种鼠标驱动程序。通常可以通过AUTOEXEC.BAT文件来安装鼠标驱动程序。然而,现在运行Windows时通常只安装一种Windows鼠标驱动程序,在这种情况下,你必须先运行在DOS shell下,然后才能调用这些鼠标函数。