кофейник » 27.09.2003 (Сб) 13:19
Помогите пожалуйста новичку в следующем вопросе:
Сделал я форму с двумя кнопками Command1 и Command2
Задумка в том чтобы при нажатии на кнопку Command1 начинал проигрываться файл 1.mid, а при нажатии на Command2 либо закрытии формы воспроизведение прекращалось. При этом при загрузке формы доступна только Command1, и при нажатии на Command1 она становиться недоступной, но становиться доступной Command2
В итоге написал я вот такой код:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Command1_Click()
Const m_MIDI = "1.mid"
Const m_MIDIAlias = "MyFile"
sndPlaySound "1.mid", 1
mciSendString "OPEN " + m_MIDI + " TYPE SEQUENCER ALIAS " + m_MIDIAlias, 0&, 0, 0
mciSendString "PLAY " + m_MIDI + " FROM 0", 0&, 0, 0
mciSendString "CLOSE ANIMATION", 0&, 0, 0
Command1.Enabled = False
Command2.Enabled = True
End Sub
Private Sub Command2_Click()
Const m_MIDI = "1.mid"
Const m_MIDIAlias = "MyFile"
sndPlaySound "1.mid", 1
mciSendString "OPEN " + m_MIDI + " TYPE SEQUENCER ALIAS " + m_MIDIAlias, 0&, 0, 0
mciSendString "STOP " + m_MIDI, 0&, 0, 0
mciSendString "CLOSE ANIMATION", 0&, 0, 0
Command2.Enabled = False
Command1.Enabled = True
End Sub
Private Sub Form_Load()
Command2.Enabled = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
Const m_MIDI = "1.mid"
Const m_MIDIAlias = "MyFile"
sndPlaySound "1.mid", 1
mciSendString "OPEN " + m_MIDI + " TYPE SEQUENCER ALIAS " + m_MIDIAlias, 0&, 0, 0
mciSendString "STOP " + m_MIDI, 0&, 0, 0
mciSendString "CLOSE ANIMATION", 0&, 0, 0
End Sub
В итоге все вроде бы работает. Однако, проблема в следующем. Когда я нажимаю на Command2 воспроизведение музыки прекращается, однако когда я после этого не закрывая формы нажимаю на Command1 то воспроизведение снова не начинается, и комп. зависает
Вопросы:
1. Почему это происходит?
2. Как это устранить, то есть сделать так, чтобы при нажатии на Command1 музыка начинала играть, после нажатия на Command2 воспроизведение останавливалось, после чего при нажатии на Command1 начинала играть снова.
По возможности дайте ответ более «разжованный» так как я новичок и многих аспектов VB еще не знаю.
Заранее благодарю.