VB6中的WindowsMediaPlayer KeyDown事件
问题描述:
我想用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的时间,当我拿着钥匙吗?
答
只是一个想法:
您可火了一定的时间间隔定时打C2.wav时KeyDown事件发射,并停止在KeyUp事件的计时器。
+0
谢谢,我尝试过,但没有工作 –
谢谢,但仍然无法正常工作。当我拿着钥匙时,我看到我的WindowsMediaPlayer1的状态更改为从播放连接。 –
当然是的。当您按住键并且每次重置“URL”时,该事件会每秒触发几次。您应该完全重新考虑您的方法,例如使用计时器和类似于'GetAsyncKeyState'的东西,或者在注册'KeyUp'之前忽略所有'KeyDown'事件。 – GSerg
@GSerg Oke,那么我怎么能让事件只发一次?我学习并尝试使用'GetAsyncKeyState',但它一样,你可以给我示例代码吗? –