Косяк со звуком.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Косяк со звуком.

Сообщение MOV » 24.06.2004 (Чт) 17:26

Есть прога.
При запуске читается настройка из ини файла в частности опция включить звуковое сопровождение или нет.
Соответственно это же самое регулируется и входе работы самой проги простым чекбоксом.
Вот сама процедура:

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long

Private Sub Check2_Click()
If Dir(App.Path + "\1.mp3") <> "" Then
If Check2.value = 1 Then
Call mciExecute("play " + App.Path + "\1.mp3 from 100")
Else
Call mciExecute("close " + App.Path + "\1.mp3")
End If
End If
End Sub

Так вот. Все работает нормально. Звук включается, выключается, но вот при запуске проги (если в ини-файле звук отключен) ругается:
"MMSYSTEM@263. Это устройство не является зарегистрированным устройством MCI" (Это что-то с дровами что ли?). Ругнется при запуске, а потом нормально работает.
Если убрать строку
Call mciExecute("close " + App.Path + "\1.mp3")
то не ругается, но и звук, соответственно, не выключает.
То есть суть в том, что здесь я описал процедуру, которая управляет звуком в ходе программы, а не при Form_Load в Form_ load аналогичная процедура, но там этой строки вообще нет, а ему не нравится строка, которую он при запуске в принципе вообще не выполняет.
Не знаю доходчиво ли объяснил суть, но может кто сталкивался?

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 24.06.2004 (Чт) 17:36

Отставить. Проблему решил. Строку
Call mciExecute("close " + App.Path + "\1.mp3")
использовать не обязательно, т.к. оказалось, что поторный вызов функции
Call mciExecute("play " + App.Path + "\1.mp3 from 100")
как это ни криво убивает потокс озданный этой же командой поток.
Тему можно убить, если никр=ому не нужна.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 24.06.2004 (Чт) 17:54

А если более точно говорить о причине этой ошибки, то найдя ее, я сделал для себя открытие. :)
Получается, что при загрузке формы автоматически выполняется событие Click для Checkboxa, но без изменения его состояния!
И поэтому если в моем случае звук отключен (в ини файле), он пытается закрыть поток, который еще не открыт и дает ошибку.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 24.06.2004 (Чт) 18:41

Получается, что при загрузке формы автоматически выполняется событие Click для Checkboxa, но без изменения его состояния!

Нет это бред :shock: :D
Короче, разобрался. Тему можно это самое того.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList  
cron