2016-12-05 102 views
-1

我想用VB6創建一個虛擬鋼琴。
我的程序將使用KeyDown事件,所以我寫了這個:VB6中的WindowsMediaPlayer KeyDown事件

Private Sub Form_KeyDown(KeyCode As Integer, Sift As Integer) 
    If KeyCode = VbKeyQ then 
     WindowsMediaPlayer1.URL = App.Path & "\sound_bank\C2.wav" 
    End If 
End Sub 

一切都很好,當我按下Q鍵在我的鍵盤上聽到的聲音,但是, 當我按住Q聲音停止前其持續時間長度。

說C2.wav的持續時間是10秒,當我在鍵盤上按下並釋放Q時,它將播放整個持續時間爲C2.wav(10s),但是當我按下並按住鍵盤上的Q時, C2.wav 4秒鐘。當我拿着鑰匙時,我看到WMP的狀態更改爲連接...從播放。

那麼,如何使它不會停止/切C2.wav的時間,當我拿着鑰匙嗎?

+0

謝謝,但仍然無法正常工作。當我拿着鑰匙時,我看到我的WindowsMediaPlayer1的狀態更改爲從播放連接。 –

+1

當然是的。當您按住鍵並且每次重置「URL」時,該事件會每秒觸發幾次。您應該完全重新考慮您的方法,例如使用計時器和類似於'GetAsyncKeyState'的東西,或者在註冊'KeyUp'之前忽略所有'KeyDown'事件。 – GSerg

+0

@GSerg Oke,那麼我怎麼能讓事件只發一次?我學習並嘗試使用'GetAsyncKeyState',但它一樣,你可以給我示例代碼嗎? –

回答

0

只是一個想法:

您可火了一定的時間間隔定時打C2.wav時KeyDown事件發射,並停止在KeyUp事件的計時器。

+0

謝謝,我嘗試過,但沒有工作 –