· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Вопрос по Minimal

Посл.отвђт Сообщенiе


Дата: Окт 5, 2003 10:41:38

Большое спасибо Asterix и Quantum за Minimal!

Вопрос такой:
Без MessageBox данный пример не работает то есть программа как бы проскакивает и не успев проиграть музыку уже её вырубает.
Как лучше сделать, чтобы этого не происходило, но и не надо было ждать каково либо ввода от пользователя. Мне это необходимо для реализации фоновой музыки. Которую я зациклил с помощью треда и в меню сделал вкл./выкл.
Код:
invoke FMUSIC_PlaySong,eax
invoke MessageBox,0,OFFSET MsgBoxText,OFFSET MsgCaption,0

invoke FMUSIC_FreeSong,hSong
invoke FSOUND_Close


Дата: Окт 5, 2003 14:55:03

Не очень понял, раз у тебя есть вкл./выкл. тогда какая проблема,
тебе MessageBox не нужен, обрабатывай нажатие на эти кнопки и всё..


Дата: Окт 5, 2003 15:03:30

stres
Кстати, что ты там ещё зацикливал, если музыка и так в цикле
играет??


Дата: Окт 5, 2003 15:47:25

Asterix

>Не очень понял, раз у тебя есть вкл./выкл. тогда какая проблема,
>тебе MessageBox не нужен, обрабатывай нажатие на эти кнопки и всё..

Попробую объяснить:
Если в вашем примере (minimal.asm) убрать MessageBox тогда музыка не играется, а выдаётся звук продолжительностью 0,5-1 секунду и прога закрывается.
Так вот мне надо, что бы этого MessageBox не было, а музыка продолжала проигрываться.

>Кстати, что ты там ещё зацикливал, если музыка и так в цикле играет??

1) “Команда” invoke FMUSIC_PlaySong,eax зацикливает проигрывание?


Что касается моего цикла:
2.1) В меню 2 команды а) включить звук и б) выключить звук. Они влияют на определённый байт.
2.2)Тред проверяет состояние этого байта
2.3)Если байт в состоянии “звук включен” то тогда работает цикл проигрывания музыкального файла
2.4)Если байт в состоянии “звук отключен” то тогда работает пустой цикл

И получается, если вставить вместе с MessageBox то тогда это уже не фоновая музыка :-) а музыка с вылезающей табличкой, которая мне не нужна.

Другой вопрос:
Я скачал файлы oldnames.lib (7424 байт) и msvcrt.lib (766606 байт) те ли это файлы, а то у меня при компиляции выдаётся ошибка:
OLDNAMES.lib : warning LNK4003: invalid library format; library ignored
Но при этом всё играется как надо! Какой размер должен быть у OLDNAMES.lib


Дата: Окт 5, 2003 19:26:16

stres
OLDNAMES.LIB -  65372 байт
MSVCRT.LIB   - 189676 байт

У меня они с VC++ 6 шли.

Что до треда, то IMO он вообще не нужен.
2.1) В меню 2 команды а) включить звук и б) выключить звук
По первой команде вызываешь FMUSIC_PlaySong:
    invoke FMUSIC_LoadSong,0,0
    mov hSong,eax
    invoke FMUSIC_PlaySong,eax

По второй - FMUSIC_FreeSong:
    invoke FMUSIC_FreeSong,hSong


Дата: Окт 5, 2003 20:56:17 · Поправил: Asterix

stres

Вот примерчик, если нравится могу выложить с исходником, но только
при согласии Quantum'а.


[ Deleted ]


Дата: Окт 5, 2003 21:32:42

Пофиксил один баг ;-)

_63747894__minisound2.zip


Дата: Окт 5, 2003 22:04:46

>OLDNAMES.LIB - 65372 байт
>MSVCRT.LIB - 189676 байт

:-) так значит у меня всё это заработало с левыми библиотеками, прикольно
Учитывая, что OLDNAMES.LIB не прилинковался то он и не нужен? Зачем эта библиотека?

Фалы с такими размерами не нашёл в сети :-( а VC++ 6 у меня нет.
Если не сложно вышлите на stres9@yandex.ru

Попробовал сделать, как Вы советовали у меня файл экзэшный получился, но он не работает (прога сразу закрывается даже звука не издав, похоже библиотека действительно подходит только частично)

Тот файл что Вы оставили то что надо.

Отваришь Quantum прошу Вас дать согласие товарищу Asterix’у выложить исходники minisound.
:-)

не успел ответить, что всё работает, а Вы там уже баг нашли :-)


Дата: Окт 5, 2003 22:18:58

Да, был баг, если несколько раз подряд кликать по "Play" то прога
виснет, по крайней мере у меня под Win98, но баг уже пофикшен :-)


Дата: Окт 5, 2003 23:12:24

stres
:-) так значит у меня всё это заработало с левыми библиотеками, прикольно
Учитывая, что OLDNAMES.LIB не прилинковался то он и не нужен? Зачем эта библиотека?

Судя по размеру MSVCRT.LIB, можно подумать, что это статическая версия Microsoft Visual C Run Time. Мы тут недавно поднимали тему о статической линковке MSVCRT. Рекомендую почитать. Для уменьшения размера экзешника (а в этом, собственно, вся суть MINIMAL) лучше использовать динамическую библиотеку (MSVCRT.DLL), т.е. тот маленький MSVCRT.LIB. OLDNAMES.LIB действительно можно исключить из процесса линковки, даже в случае с маленьким MSVCRT.LIB. Но этого не нужно делать! Данная либа не влияет на размер экзешника и её лучше не трогать, а то MSVCRT обидется :-) OLDNAMES просто содержит переходники с именами функций, вроде MessageBox -> _MessageBoxA@16. Короче, лучше таскать OLDNAMES.LIB вместе с MSVCRT.LIB на всякий пожарный.

Если не сложно вышлите на ***
OK, сейчас отправлю.

Asterix
но только при согласии Quantum'а.
Ты прекрасно знаешь, что я не против :))) Твоя программа, ведь, в конце концов.


Дата: Окт 6, 2003 00:20:13

Quantum

:-))), моя программа?, основа ее твоя! Я вот думаю может её в раздел
исходники добавить к minimal?? Давай я тебе пришлю а ты распорядишся
как надо.. ;-)


Дата: Окт 6, 2003 02:22:20

Asterix
OK, но тогда stres придётся потерпеть... пока это дело обновится на сайте... через пару дней.


Дата: Окт 6, 2003 13:53:32

Quantum

>OK, но тогда stres придётся потерпеть... пока это дело обновится на сайте... через пару дней.

ОК жду. Спасибо за либы.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.130