Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: помогите новичку Добавлено: 19.09.03 16:24  

Автор вопроса:  кофейник

Помогите пожалуйста новичку в следующем вопросе:

Сделал я форму с двумя кнопками 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 еще не знаю.

Заранее благодарю.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 ZoomerSD



ICQ: 148640473 

Вопросов: 135
Ответов: 270
 Профиль | | #1 Добавлено: 20.09.03 02:48

твой код у тебя виснит из-за того, что у тебя нехватает оперативки, поэтому если тебя не смущает вес в 4.5 мегабайта, могу посоветовать сделать так Ctrl+T>Windows Media Player потом кинь его на форму, переименуй в WM вставляй код и вперёд(как складно-то)

Private Sub Command1_Click()
Command1.Enabled = False
WM.URL = "C:/1.mid"
Command2.Enabled = True
End Sub

Private Sub Command2_Click()
Command2.Enabled = False
WM.URL = ""
Command1.Enabled = True
End Sub

Private Sub Form_Load()
WM.uiMode = "invisible"
Command2.Enabled = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
WM.URL = ""
End Sub
 код элементарно простой, я думаю сам поймёшю Удачи

Ответить

Номер ответа: 2
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #2
Добавлено: 20.09.03 04:22

А вообще юзай DirectMusic. У меня было оперативки 32 метра (щас 256 ура ура ура!)-всё было ок!

Кому примерчик надо, намылю.

Ответить

Номер ответа: 3
Автор ответа:
 Last_Santa



ICQ: 200700724 

Вопросов: 38
Ответов: 329
 Web-сайт: localhost
 Профиль | | #3
Добавлено: 20.09.03 04:44
2Morpheus мне вышли last_santa@rambler.ru

Ответить

Номер ответа: 4
Автор ответа:
 кофейник



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 20.09.03 14:03

2 zoomersd
Спасибо большое за помощь.

Сделал все как ты сказал, однако при запуске приложения выдается следующее сообщение

ошибка 438

 

Ответить

Номер ответа: 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

Строку WM.uiMode = "invisible" убрал

при запуске форма стала появляться, однако, при нажатии на Command1 появляется сообщение

Run-time error 438

Object doesn't support this property or method

Ответить

Номер ответа: 7
Автор ответа:
 ZoomerSD



ICQ: 148640473 

Вопросов: 135
Ответов: 270
 Профиль | | #7 Добавлено: 20.09.03 21:17

хм, в принцепи вполне возможно что у тебя просто эта DLL более старой версии, поэтому попробуй сделать код сам принцип у тебя есть. А если не сможеш, намыль мне библиотеку

C:/Windows/System(или System32)/wmp.dll 

 

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам