Win32 - MCI Looping сокращает первую нотуC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Win32 - MCI Looping сокращает первую ноту

Сообщение Anonymous »

Минимальный образец: < /p>
#include

void midiPlay(HWND hwnd, LPSTR midi) {
char s[256];

memset(s, 0, 256);
sprintf(s, "open %s type sequencer alias mus", midi);
mciSendString(s, 0, 0, 0);

mciSendString("play mus notify", 0, 0, hwnd);
};

LRESULT CALLBACK WindowProc(HWND hw, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_CLOSE:
DestroyWindow(hw);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case MM_MCINOTIFY:
mciSendString("play mus from 0 notify", 0, 0, hw);
return 0;
}
return DefWindowProc(hw, uMsg, wParam, lParam);
};

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wc = {0};
MSG msg;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = "TEST";

RegisterClass(&wc);

HWND hwnd = CreateWindowEx(WS_EX_TOPMOST, "TEST", "TEST", WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, 0, 0, hInstance, 0);

midiPlay(hwnd, ".\\ancient.mid");

bool running = true;

while (running) {
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT) {
running = false;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
};
< /code>
midi, который я использую: limewire.com. < /p>
Первая нота MIDI пропускается на петлях. Я уже пробовал вручную ищу, останавливаясь и перезапустив миди, ни один из них не работал. Я не знаю, что еще сделать.

Как это исправить? < /P>

Подробнее здесь: https://stackoverflow.com/questions/797 ... first-note
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»