您尚未
登入
註冊
忘記密碼
搜尋
贊助
贊助本站
數位公仔
紀念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
手機版
訂閱
地圖
簡體
您是第
2799
個閱讀者
可列印版
加為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.085698 second(s),query:16 Gzip disabled
本站由
瀛睿律師事務所
擔任常年法律顧問 |
免責聲明
|
本網站已依台灣網站內容分級規定處理
|
連絡我們
|
訪客留言