| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 842 人关注过本帖
标题:[求助]这个C语言源程序哪有问题?int86中断控制
只看楼主 加入收藏
水木林夕
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-10-18
收藏
 问题点数:0 回复次数:1 
[求助]这个C语言源程序哪有问题?int86中断控制

下面这个程序是为了播放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();
}
}

搜索更多相关主题的帖子: C语言 
2006-10-18 21:08
水木林夕
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-10-18
收藏
得分:0 

改进程序啊,在TC2.0下调试成功啦,不过在Borland C++上就不行,不知道怎么回事啊
#include<stdio.h>
#include<conio.h> // kbhit()
#include<dos.h> // int86() sound() nosound()
#include<stdlib.h>

union REGS r;
union REGS Inr,Outr;

void initmouse()
{
r.x.ax=0;
int86(0x33,&r,&r);
r.x.ax=2;
int86(0x33,&r,&r);
}

int readmouse(int *iMx,int *iMy,int *status)
{
Inr.x.ax=3;
int86(0x33,&Inr,&Outr);
*iMx=Outr.x.cx;
*iMy=Outr.x.dx;
*status=Outr.x.bx;
}

main()
{
int i;
int iMx1=0,iMy1=0,status1=0;
int iMx2=0,iMy2=0,status2=0;
unsigned f[]={262,294,330};
initmouse();
readmouse(&iMx1,&iMy1,&status1);
for(i=0;i<=3;i++)
{
if(!kbhit())
{
if(i==3) i=0;
sound(f[i]);
sleep(1);
nosound();
readmouse(&iMx2,&iMy2,&status2);
if((iMx1!=iMx2)||(iMy1!=iMy2)||(status2&1)||(status2&2))
break;
}
}
}

2006-10-19 20:27
快速回复:[求助]这个C语言源程序哪有问题?int86中断控制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014864 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved