通用鼠标键盘

news/2024/11/17 10:59:28/

       


/*
  该程序通过并行机制处理鼠标和键盘的消息,为了简化程序裁减了一些代码,该程序可用为基础在该程序上添加代码可用于文本编辑,游戏和其他鼠标键盘通用的程序.
*/
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>

union REGS regs;
unsigned size;
void far *Buffer;

int ScanKey();
void Mouse();
void Init();
int InitMouseDrive();

int main()
{
  int key,x,y,cx,cy;
  x=1,y=1;
  Init();/*初始化图形模式*/
  if(InitMouseDrive(&cx,&cy))/*安装鼠标*/
  {
   printf("Mouse Drive Error!");
   exit(0);
  }
  size=imagesize(cx-2,cy-2,cx+2,cy+2);
  Buffer=(void *)malloc(size);
  getimage(cx-2,cy-2,cx+2,cy+2,Buffer);
  do
  {
    if(kbhit()) /*检查当前按下的健*/
      {
       key=ScanKey();/*得到按键结果*/
       rectangle(x,y,x+5,y+5);
       x+=10;
       if(x>=630)
         {
           x=1;
           y+=10;
         }
      }
     else
         Mouse(&cx,&cy);/*访问鼠标信息的到新的光标坐标*/
   }while(key!=0x01);

   closegraph();
}

/*键盘*/
int ScanKey()
{
 return (bioskey(0)>>8) ;//此处ESC:0X011b右移8位得:0X01
}

/*图形驱动*/
void Init()
{
 int graphdrive=DETECT,graphmode=0;
 registerbgidriver(EGAVGA_driver);
 initgraph(&graphdrive,&graphmode,"D:\learn_tools\TC201E");
  setbkcolor(6);/*背景色*/
  setcolor(5);/*画笔颜色*/
}


/*鼠标*/
void Mouse(int *px,int *py)
{
 int mx,my,omx,omy;
 regs.x.ax=3;
 int86(0x33,&regs,&regs);
 omx=*px,omy=*py;
 mx=regs.x.cx;
 my=regs.x.dx;
 if(mx!=*px||my!=*py)/*当鼠标位置改变是重新绘制光标*/
 {
   *px=mx; *py=my;
   putimage(omx-2,omy-2,Buffer,COPY_PUT);
   free(Buffer);
   size=imagesize(mx-2,my-2,mx+2,my+2);
   Buffer=(void *)malloc(size);
   getimage(mx-2,my-2,mx+2,my+2,Buffer);
   rectangle(mx-2,my-2,mx+2,my+2);
 }
}


/*鼠标驱动*/
int InitMouseDrive(int *rpx,int *rpy)
{
  int Found=0;
  regs.x.ax=0;
  int86(0x33,&regs,&regs);
  Found=regs.x.ax;
  regs.x.ax=7;
  regs.x.cx=3;
  regs.x.dx=635;
  int86(0x33,&regs,&regs);
  regs.x.ax=8;
  regs.x.cx=3;
  regs.x.dx=480;
  int86(0x33,&regs,&regs);
  regs.x.ax=4;
  regs.x.cx=*rpx=640/2;
  regs.x.dx=*rpy=480/2;
  int86(0x33,&regs,&regs);
  if(Found==0)
     return 1;
  return 0;
}


说明:本文章是通过查阅网站、博客资料、相关C书籍(其中最重要是C函数库的学习)学习总结,在此感谢各大网站、博客、书籍等为我们带来的便利。在学习过程中本人总结的一些C比较好的编程方法与通用代码,希望这篇文章能够为朋友们带来一些帮助,希望各位朋友们能自己动手编写一些小游戏来增加学习的兴趣。如有问题请各位多多指教,大家多多交流共同学习!

 


http://www.ppmy.cn/news/146698.html

相关文章

解决雷柏无线键鼠突然失效的问题

今天把电脑休眠掉&#xff0c;唤醒来之后雷柏的无线键鼠套装突不能使用。换电池&#xff0c;重装系统均无效。找到淘宝卖家&#xff0c;卖家说可能是丢失程序码&#xff0c;给我发过来一个雷柏的键鼠对码程序&#xff08;下载地址在后面&#xff09;&#xff0c;安装&#xff0…

手机无线遥控器,让手机变成无线鼠标+无线键盘!

很久在blog上写东西了&#xff0c;自从在手机上折腾一个Hello World程序之后&#xff0c;我紧接着就开始折腾这个手机通过蓝牙遥控电脑的玩艺。其实在购买N-Gage之前我就已经有这样的想法&#xff0c;因为我电脑上装的电视卡遥控器没用多久坏了&#xff0c;我就想能不能用手机蓝…

买了两套无线键鼠套装

前几天买了两套无线键鼠套装&#xff0c;一套是雷柏的8100&#xff0c;自已用。该键盘鼠标的特点是美观时尚&#xff0c;键盘手感很好&#xff0c;鼠标DPI为1000DPI&#xff0c;操作灵敏&#xff0c;手感也很不错&#xff0c;而且是2.4G的&#xff0c;最长距离键盘实际可达8米左…

C Primer Plus第十六章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 由于使用的是命令行参数常用于linux系…

基于OpenCV的人脸检测软件(含Python源码+UI界面+图文详解)

软件功能演示 摘要&#xff1a;人脸检测的目标是找出图像中所有的人脸对应的位置&#xff0c;算法的输出是人脸外接矩形在图像中的坐标&#xff0c;可能还包括姿态如倾斜角度等信息。本文详细介绍了其实现的技术原理&#xff0c;同时给出完整的Python实现代码&#xff0c;并且通…

系统中级集成项目管理工程师(中项)好考吗?

软考系统集成项目管理工程师是一项非常重要的考试&#xff0c;对于从事信息技术和管理方面的人员来说&#xff0c;这是一个非常有用的证书。 对于零基础的考生来说&#xff0c;软考系统集成项目管理工程师是否好考&#xff0c;主要取决于他们的学习态度和学习方法。 一般而言…

Android不同手机屏幕分辨率自适应

有必要了解的 Android中常见的单位 dip, dp, px, sp之间的区别&#xff1a; dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关&#xff0c;一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个&#xff0c;不依赖像素。 px: pixels(像…

moto+早期android手机,王者归来 MOTO近期Android手机汇总

第1页:HTC甘拜下风 MOTO近期Android手机汇总 第2页:里程碑无键盘版&#xff1a;摩托罗拉XT711 第3页:新入门手机&#xff1a;摩托罗拉XT502 第4页:明系列谷歌新作&#xff1a;摩托罗拉A1680 第5页:纯直板Android&#xff1a;摩托罗拉Charm 第6页:超强Ophone&#xff1a;摩托罗拉…