Страница: 1 |
Помогите пожалуйста новичку в следующем вопросе: Сделал я форму с двумя кнопками 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 еще не знаю. Заранее благодарю.
твой код у тебя виснит из-за того, что у тебя нехватает оперативки, поэтому если тебя не смущает вес в 4.5 мегабайта, могу посоветовать сделать так Ctrl+T>Windows Media Player потом кинь его на форму, переименуй в WM вставляй код и вперёд(как складно-то) Private Sub Command1_Click() Private Sub Command2_Click() Private Sub Form_Load() Private Sub Form_Unload(Cancel As Integer) А вообще юзай DirectMusic. У меня было оперативки 32 метра (щас 256 ура ура ура!)-всё было ок! Кому примерчик надо, намылю. 2 zoomersd Сделал все как ты сказал, однако при запуске приложения выдается следующее сообщение ошибка 438 Строку WM.uiMode = "invisible" убрал при запуске форма стала появляться, однако, при нажатии на Command1 появляется сообщение Run-time error 438 Object doesn't support this property or method хм, в принцепи вполне возможно что у тебя просто эта DLL более старой версии, поэтому попробуй сделать код сам принцип у тебя есть. А если не сможеш, намыль мне библиотеку C:/Windows/System(или System32)/wmp.dll Страница: 1 |
Вопрос: помогите новичку
Добавлено: 19.09.03 16:24
Автор вопроса:
кофейник
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: ZoomerSD
ICQ: 148640473
Вопросов: 135
Ответов: 270
Профиль | | #1
Добавлено: 20.09.03 02:48
Command1.Enabled = False
WM.URL = "C:/1.mid"
Command2.Enabled = True
End Sub
Command2.Enabled = False
WM.URL = ""
Command1.Enabled = True
End Sub
WM.uiMode = "invisible"
Command2.Enabled = False
End Sub
WM.URL = ""
End Sub
код элементарно простой, я думаю сам поймёшю Удачи
Номер ответа: 2
Автор ответа: Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #2
Добавлено: 20.09.03 04:22
Номер ответа: 3
Автор ответа:
Last_Santa
ICQ: 200700724
Вопросов: 38
Ответов: 329
Web-сайт:
Профиль | | #3
Добавлено: 20.09.03 04:44
2Morpheus мне вышли last_santa@rambler.ru
Номер ответа: 4
Автор ответа: кофейник
Вопросов: 1
Ответов: 2
Профиль | | #4
Добавлено: 20.09.03 14:03
Спасибо большое за помощь.
Номер ответа: 5
Автор ответа: ZoomerSD
ICQ: 148640473
Вопросов: 135
Ответов: 270
Профиль | | #5
Добавлено: 20.09.03 14:24
Хм... 438 говориш, у меня такого небыло, а что ещё она пишет?(попробуй убрать строку которая WM.uiMode = "invisible" , вполне может быть из-за этого)
Номер ответа: 6
Автор ответа: кофейник
Вопросов: 1
Ответов: 2
Профиль | | #6
Добавлено: 20.09.03 15:26
Номер ответа: 7
Автор ответа: ZoomerSD
ICQ: 148640473
Вопросов: 135
Ответов: 270
Профиль | | #7
Добавлено: 20.09.03 21:17