Winapi — C ++ Win32 — Как зациклить MIDI с mciSendString ()?

Я делаю игру и пытаюсь зациклить MIDI-файл с помощью mciSendString (). Я посмотрел на CProgramming.com, но объекты окна примера были OWL, и я не мог их портировать. Я также попытался взглянуть на вопрос Брайана Градина, но ответ содержал только две строки кода. Я посмотрел на MSDN, но это как ссылка, а не учебник. Добавление повторения ничего не играет. Это код, который я до сих пор:

mciSendString("open PUG1.MID type sequencer alias music", NULL, 0, NULL);
mciSendString("play music", NULL, 0, NULL);

Если вы поможете, я обязательно внесу вас в списки.
Спасибо! 🙂

РЕДАКТИРОВАТЬ: Я пытался обработать флаг уведомления, но мой код не будет работать. Он играет тему один раз, затем останавливается.

    //At the end of WM_CREATE...
mciSendString("open MUSIC\\PUG2.MID type sequencer alias music", NULL, 0, NULL);
mciSendString("play music", NULL, 0, NULL);
break;
case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music", NULL, 0, NULL);
break;

0

Решение

Вы можете использовать notify флаг будет уведомлен, когда песня заканчивается.

Это похоже на работу:

case WM_CREATE:
mciSendString("open pickin0.mid type sequencer alias music", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;

case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;

Вам нужно передать свой дескриптор окна, когда вы используете команду notify, чтобы он мог отправить MM_MCINOTIFY командовать где-то.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]