Код: Выделить всё
#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;
};
Первая нота MIDI пропускается на петлях. Я уже пробовал вручную ищу, останавливаясь и перезапустив миди, ни один из них не работал. Я не знаю, что еще делать. Как это исправить?
Подробнее здесь: https://stackoverflow.com/questions/797 ... first-note