DOS下鼠标器的使用

鼠标----用过计算机的人,不会陌生吧~~
现在的操作系统都支持图形化,都已经离不开鼠标了,电脑的普及也是随着鼠标的
发明而开始的----至少可以这么说~

一般我们用鼠标,都是安装驱动程序,然后装上鼠标,设置一些参数(这一步当然装
时自动处理的).

但是我们这里讨论的不是怎么样安装鼠标驱动程序,而是用C来写也相关的操作,
然后把相关的操作应用到应用程序里.这
是对着应用程序来说的,比如说我们编一个程序,如何来把鼠标的应用放进来?
这就是一个应用上的问题了~(如果你编的是Windows程序,就免了)

在dos里,程序是通过中断33H可取鼠光标的位置和鼠标器的按钮状态,同时还能改变
鼠光标的颜色和形状......等等,其他相关操作,对于经常使用的功能有四个,四
个参数分别放在ax,bx,cx和dx四个寄存器内,从而使驱动程序的接口变得简单而
又规范.下面看一些具体实践,我们先设置一些函数,并规定其功能:

extern void mouse(int *m1,int *m2,int *m3,int *m4); //C语言直接调用鼠标驱动程序的办法
extern int check_mouse_driver(int need_mouse);//检查操作系统是否已经安装了鼠标
extern int init_mouse(int need_mouse,int gd,int gm);//初始化鼠标
extern int mouse_reset(void);//复位鼠标,如果鼠标是开的,关闭
extern void move_mouse(intx,inty);//把鼠标光标移到指定的屏幕文本位置上
//下面这两个函数等下说明:)
extern void mouse_on(int code);                   
extern void mouse_off(int code);

extern void move_grph_posn(int *x,int *y);//如果鼠标已经初始化,返回光标的图形坐标,没有初始化就返回(0,0)
extern void move_txt_posn(int *x,int *y);
/*C语言的文本座标从(1,1)开始 ,鼠标驱动程序返回的是图形座标,起点(0,0) 该鼠标函数总是把屏幕看成640*200像素*/

extern int mouse_in_box(int graphflay,int left,int right,int top,int bottom);//判断鼠标是否在指定的矩形框内
/*
      下面三个函数的具体用途,用一个实例来表示:
   一种典型的拖动鼠标的的过程总是通过函数button_press()开始,
   在拖动过程中,不断通过函数button_state()检查状态,
   最后通过函数button_release()结束过程
*/
extern int button_release(int b);                 
extern int button_press(int b);
extern int button_state(void);
/*
       该函数查看键盘上的键是否按下,鼠标按钮是否曾经按过,或释放过,如果同时,
   键盘优于鼠标,鼠标在操作过程中,左按钮优于右按钮
*/
extern int mouse_trigger(int button_dir);

通过说明,我们对上面的函数除了
extern void mouse_on(int code);                   
extern void mouse_off(int code);
不了解其功能外,其他的都应该能知道一点点了吧~~

下面就开始着手写相关操作了:
在写之前先定义一些宏,对于大部分人不必知道这些宏是什么意思
#include
#include
#include
#include
#include

#define lo(f) ((f)&0xff)
#define hi(f) ((lo(f>>8)
#define CTRLC 0x2E03
#define CTRLH 0x2308
#define CTRLI 0x1709
#define CTRLL 0x260C
#define CTRLK 0x250B
#define CTRLJ 0x260C
#define CTRLU 0x1615
#define CTRLR 0x1312
#define CRKEY 0x1C0D
#define CTRLCRKEY 0x1C0A
#define UPKEY 0x4800
#define DOWNKEY 0x5000
#define LEFTKEY 0x4B00
#define RIGHTKEY 0x4D00
#define SHIFTLEFT 0x4D34
#define SHIFTRIGHT 0x4D36
#define DELKEY 0x5300
#define INSKEY 0x5200
#define BSKEY 0x0E08
#define SPACEBAR 0x3920
#define PGUPKEY 0x4900
#define PGDNKEY 0x5100
#define SHFTUPKEY 0x4838
#define SHFTDNKEY 0x5032
#define SHFTGUPKEY 0x4939
#define SHFTGDNKEY 0x5133
#define HOMEKEY 0x4700 <
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值