2016-12-05 98 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

谢谢,我尝试过,但没有工作 –