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;

1 ответ

Решение

Вы можете использовать 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 командовать где-то.

Другие вопросы по тегам