2013-03-27 155 views
1

嘿,我在過去幾天問過這個問題幾次,但我只是不明白它......我基本上想要在後臺執行Beep命令的while循環,而用戶可以進行交互與可用的案例陳述(只有一個顯示..其他人)....我不斷被阻止,每次我想要嘟嘟聲不斷髮出聲音,我阻止我的程序的其餘部分...我必須使用嗶聲請不要提出任何其他功能..我如何阻止阻擋?

這裏是一個示例代碼...

while(keypress != 'q' || keypress != 'Q') 
{ 
    x = Beep(x); 
    while (x == 1) 
     Beep(350,300); 

    alarm_t current; 
    keypress = _getch(); 

    switch(keypress){ 

     case 'h': 
      sprintf_s(current.message,"high alarm"); 
      current.timeOfEvent = time(NULL); 
      recordEvent(current); 
      break; 

現在...我的問題是與while循環和蜂鳴命令....這裏是什麼我打電話給嗶聲(x)

int Beep(int y) 
{ 
    return y; 
} 

所以基本上我試圖調用一個函數我目前CPP文件只是比較X和Y之外,並返回是等價於X ...我想這可能避免阻塞,但它不...

+5

'而(!按鍵= 'Q' &&按鍵= 'Q'!)' – wildplasser 2013-03-27 22:20:36

+0

導致程序通過蜂鳴堵塞... – 2013-03-27 22:25:50

+1

你」我真的得停止while循環while循環。如果你做得對,你的上層循環速度非常快,以至於如果你只是在沒有內部'while'的情況下調用Beep,用戶就不會聽到太大的差別。 – 2013-03-27 22:26:32

回答

3

你的while循環嘟嘟只是不會工作,_getch阻止。所以它會阻止,直到有一個角色。

根據你的平臺,你需要像kbhit(如果你谷歌,你會發現其他平臺的替代品)。即它不是標準的C功能和平臺特定的。

kbhit將根據是否有字符返回true或false。

所以,你可以這樣做:

while(!key_is_quit(ch)) 
{ 
    Beep(); 
    if(kbhit()) 
    { 
    ch = getch(); 
    // switch.... 
    } 
}