您尚未
登入
注册
忘记密码
搜寻
赞助
赞助本站
数位公仔
纪念T恤
纪念马克杯
广告
刊登广告
广告价格
线上申请刊登
用雅币刊登
免费刊登
目前客户
简讯
简讯说明
购买金币
发送简讯
预约简讯
发送记录
好友通讯
罐头简讯
论命
数位论命馆
免费排盘工具
葫芦墩 优生造命
葫芦墩 八字命书
影音论命(葫芦墩)
影音占卜(葫芦墩)
购买金币
星座分析
孔明神数
周公解梦
星侨线上论命
娱乐
影 像 行 脚
数 位 造 型
数 位 画 廊
心 情 日 记
公 益 彩 券
送生日蛋糕
俄罗斯方块
四 川 省
猜 数 字
比 大 小
泡 泡 龙
许 愿 池
万 年 历
经 期 计 算
体 重 测 量
音 乐 点 播
卫 星 地 图
时间戳字幕
男女聊天室
求助
论坛守则
会员等级
会员权限
语法教学
常见问题
最新活动
打工赚雅币
首页
新版首页(全页)
传统首页(全页)
新版首页(选单)
传统首页(选单)
MyChat 数位男女
命理风水
15
星侨五术软体
4
葫芦墩命理网
5
命理问答
9
四柱八字
1
紫微斗数
1
姓名学
手面相
易经占卜
1
风水研讨
1
择日&三式
1
西洋占星
无视论塔罗牌
10
修行&武术
1
中医研讨
五术哈啦
1
电脑资讯
13
硬体讨论
5
超频 & 开箱
3
数位生活
2
PDA 讨论
手机讨论区
软体推荐
2
软体讨论
6
Apple 讨论
1
Unix-like
网路&防毒
2
程式设计
网站架设
4
电脑教学资源
生活休闲
14
休闲哈啦
7
感情世界
2
上班一族
5
国考&法律
7
生活医学
4
运动体育
1
单车讨论
1
钓鱼讨论
6
旅游讨论
4
天文观星
3
摄影分享
8
图片分享
4
数位影视
2
笑话集锦
3
兴趣嗜好
13
文学散文
7
绘图艺术
1
布袋戏
3
动漫画讨论
3
美食天地
6
理财专区
心理测验
1
汽、机车
3
宠物园地
模型&手工艺
4
花卉园艺
魔术方块
独轮车专区
电玩游戏
13
游戏欢乐包
4
CS讨论
8
Steam
3
MineCraft
2
东方Project
英雄联盟LOL
1
单机游戏
2
WebGame
3
线上游戏1
6
线上游戏2
5
电视游乐器
1
掌上型游戏
2
模拟器游戏
1
工商服务
6
虚拟城市
7
好康分享
新品贩售
二手拍卖
1
租屋&找屋
工商建议区
1
站务专区
10
最新活动
活动成果
数位造型
心情日记
个人图库
新人报到练习
论坛问题建议
1
荣会及电子报讨论
-最近版区-
-最近浏览-
»
程式设计
»
while loop问题--part3
手机版
订阅
地图
繁体
您是第
2805
个阅读者
可列印版
加为IE收藏
收藏主题
上一主题
|
下一主题
aniegg
级别:
初露锋芒
x0
x26
分享:
▼
x
0
[C#] while loop问题--part3
经过一天的修改,我的程式已经接近完成,
剩下最后一个bug还没解决--按ESC键离开程式。
问题描述:
我在while loop里,加入:
if ( kbhit() ) {
if ( getch() == 27 )
break;
}
目的是当然是想按ESC键结束程式,但是却无法达到目的,程式依然继续执行while loop。
程式码:
#include <stdio.h>
#include <dos.h ..
访客只能看到部份内容,免费
加入会员
或由脸书
Google
可以看到全部内容
飒风沾、问途寒,谁与共饮,谁敢挡关?
燕戟归命人不还。
x
0
[楼 主]
From:台湾 |
Posted:
2005-10-02 22:22 |
youchun
级别:
小人物
x0
x26
分享:
▲
▼
我猜是因为中断而引发的问题
试试看 if (code == <ESC scancode>) break;
先找出 <ESC scancode>
不保证有效果..
x
0
[1 楼]
From:台湾中华电信 |
Posted:
2005-10-02 23:02 |
cmovies
级别:
小人物
x0
x20
分享:
▲
▼
为何在 int_0x09 不呼叫 oldfunc ???
还有程式结束后应该要把 interrupt 09 还回来吧? 不然结束后不会当机或不能按键吗?
如果真的不想再 int_0x09 中呼叫 oldfunc, 那就应该照 youchun 的建议修改应该就可以了!
ESC scancode 好像是 01h 还是 76h? 你可以试看看!
x
0
[2 楼]
From:未知地址 |
Posted:
2005-10-02 23:35 |
aniegg
级别:
初露锋芒
x0
x26
分享:
▲
▼
感谢大大,
程式已经没问题了,
不过我还是很纳闷,
我抓到ESC的scan code有两个,分别是1跟81
但是只有1这个值可以让我结束程式,而81却不能,
到底时什么原因,请大大说明一下,谢谢!
飒风沾、问途寒,谁与共饮,谁敢挡关?
燕戟归命人不还。
x
0
[3 楼]
From:台湾 |
Posted:
2005-10-02 23:38 |
cmovies
级别:
小人物
x0
x20
分享:
▲
▼
81h 是按键放开码, 应该 01h 跟 81h 都可以.
你该不会直接写 81 而不是 0x81 吧!?
x
0
[4 楼]
From:未知地址 |
Posted:
2005-10-02 23:45 |
aniegg
级别:
初露锋芒
x0
x26
分享:
▲
▼
我直接用
if( code==1 )
break;
就可以成功使用ESC键离开程式了,
下面是我最后的程式码,
#include <stdio.h>
#include <dos.h>
#include <conio.h>
int code, count = 0, key;
void interrupt int_0x09();
void interrupt (*oldfunc)();
void interrupt int_0x09()
{
count++;
key = key+50;
code=inportb(0x60);
sound(key);
delay(50);
nosound();
outportb( 0x20, 0x20 );
}
main()
{
clrscr ();
oldfunc=getvect(0x09);
printf( "Test keyboard interrupt (0x09) \n\n" );
key=getch ();
setvect (0x09, int_0x09);
while ( count < 30 )
{
printf( "The character is entered, scan code = %x\n", code );
delay(500);
if( code==1 )
break;
}
setvect(0x09,oldfunc);
return 0;
}
飒风沾、问途寒,谁与共饮,谁敢挡关?
燕戟归命人不还。
x
0
[5 楼]
From:台湾 |
Posted:
2005-10-02 23:57 |
cmovies
级别:
小人物
x0
x20
分享:
▲
▼
请问 delay(500) 的目的为何? 有时候按键太快应该也会 lost 按键显示吧?
还有如果没按键不是也会每半秒出现一次 "The character is entered, scan code = .." 吗?
你应该可以加一个 ReadyFlag 在 int_0x09 中设为 1
然后主程式改成 (因为按键不会很快, 所以不考虑 ReadyFlag 同时被设定的问题)
whlie (count < 30)
{
if (ReadyFlag)
{
ReadyFlag = 0;
printf( "The character is entered, scan code = %x\n", code );
if (code==0x81) // 等 ESC 放开后再离开
break;
}
}
x
0
[6 楼]
From:未知地址 |
Posted:
2005-10-03 00:17 |
aniegg
级别:
初露锋芒
x0
x26
分享:
▲
▼
你是指
void interrupt int_0x09()
{
count++;
ReadyFlag=1;
key = key+50;
code=inportb(0x60);
sound(key);
delay(50);
nosound();
outportb( 0x20, 0x20 );
}
这样会出现错误讯息:Undifined symbol 'ReadyFlag'
飒风沾、问途寒,谁与共饮,谁敢挡关?
燕戟归命人不还。
x
0
[7 楼]
From:台湾 |
Posted:
2005-10-03 01:06 |
cmovies
级别:
小人物
x0
x20
分享:
▲
在程式最上面加一个变数, 如
int code, count = 0, key, ReadyFlag=0;
x
0
[8 楼]
From:未知地址 |
Posted:
2005-10-03 01:10 |
MyChat 数位男女
»
程式设计
Powered by
PHPWind
v1.3.6
Copyright © 2003-04
PHPWind
Processed in 0.067222 second(s),query:16 Gzip disabled
本站由
瀛睿律师事务所
担任常年法律顾问 |
免责声明
|
本网站已依台湾网站内容分级规定处理
|
连络我们
|
访客留言