下面这个程序是为了播放do、re、mi的音乐,并响应键盘跟鼠标的触发而停止,
但运行后发现音乐能持续播放,但不能停止,而且屏幕显示也不能按预想的实现
#include<stdio.h>
#include<conio.h> // kbhit()
#include<dos.h>   // int86() sound() nosound()
#include<stdlib.h>
union REGS r;
union REGS Inr,Outr;
union REGS Ins,Outs;
int iMx=0,iMy=0;
void initgraph(int mode)   // 初始化屏幕
{
 r.h.ah=0;
 r.h.al=mode;
 int86(0x10,&r,&r);
}
void initmouse()   //初始化鼠标
{
 r.x.ax=0;
 int86(0x33,&r,&r);
 r.x.ax=1;
 int86(0x33,&r,&r);
}
void getmouse()    //读取鼠标状态
{
 Inr.x.ax=3;
 int86(0x33,&Inr,&Outr);
 iMx=Outr.x.cx;
 iMy=Outr.x.dx;
}
int mousestatus()   //看鼠标位置是否移动
{
 getmouse();
 Ins.x.ax=3;
 int86(0x33,&Ins,&Outs);
 if(iMx!=Outs.x.cx||iMy!=Outs.x.dx)
 return 1;
 else
 return 0;
}
main()
{
 int i;
 unsigned f[]={262,294,330};
 initgraph(18);                           //设置屏幕为640*480图形模式
 initmouse();
 if((!kbhit())&&(!mousestatus()))
  for(i=0;i<=3;i++)                       //do、re、mi的播放循环
  {
   if(i==3) i=0;
   sound(f[i]);
   sleep(1);
   nosound();
  }
}

 
											





