2014-03-25 12 views
0

게임을 만들고 있는데 mciSendString()을 사용하여 MIDI 파일을 반복하려고합니다. CProgramming.com을 보았지만 예제의 창 개체는 OWL이었고이 포트를 포팅 할 수 없었습니다. Brian Gradin의 질문을 보았지만 대답에는 두 줄의 코드 만 포함되었습니다. MSDN에서 보았습니다.하지만 튜토리얼이 아닌 레퍼런스와 같습니다. 반복을 추가해도 아무 것도 재생되지 않습니다. 이것은 내가 지금까지 가지고있는 코드입니다 :C++ Win32 - mciSendString()을 사용하여 MIDI를 루프하는 방법은 무엇입니까?

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

'음악 반복 재생 '을 시도해 보셨습니까? –

+0

MIDI 파일에 추가 할 때 아무 것도 재생되지 않습니다. – TheNoob

+0

오, 그만한 가치가 있습니다. 언급 한 질문에서 제안한대로 수동으로 처리해야하는 것처럼 보입니다. 'notify' 플래그는 시퀀서에서 지원되는 경우 더 좋은 방법 일 수 있습니다. 타사 라이브러리를 고려할 수도 있습니다. –

답변

3

노래가 끝날 때 notify 플래그를 사용할 수 있습니다.

이 작동하는 것 같다 :

당신은 당신이 어딘가에 MM_MCINOTIFY 명령을 보낼 수 있도록 명령을 통지 사용할 때 창 핸들을 전달해야
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; 

.

+0

고맙습니다, 은퇴 한 닌자. 나는 당신의 이름을 반드시 신용에 추가 할 것입니다. :) – TheNoob