조회 수 496 추천 수 1 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
예 일단 프로젝트에 winmm.lib 이라는 라이브러리를 추가한 후에, 다시 프로젝트에서 MMC.H 파일과 MMC.CPP 파일을 만듭니다.

그리고 MMC.H 파일에 다음을 삽입해주세요
#pragma once

#include "StdAfx.h"
#include <mmsystem.h>

class playMedia {
        protected:
                MCIDEVICEID wDeviceID;
        public:
                void ShowError(DWORD err);
                BOOL play(CString file);
                BOOL play();
};

그리고 MMC.CPP 파일에는 다음을 삽입해주세요
#include "StdAfx.h"
#include "MMC.H"

BOOL playMedia::play(CString file)
{
    DWORD dwReturn;
    MCI_OPEN_PARMS mciOpenParms;
    MCI_PLAY_PARMS mciPlayParms;    
    
    mciOpenParms.lpstrDeviceType = "MPEGVideo";
    mciOpenParms.lpstrElementName = file;
    if( dwReturn = mciSendCommand(NULL,MCI_OPEN,MCI_NOTIFY | MCI_OPEN_TYPE | MCI_OPEN_ELEMENT | MCI_WAIT,(DWORD)&mciOpenParms))
    {
        ShowError(dwReturn);
        return false;
    }
    
    wDeviceID = mciOpenParms.wDeviceID;
    //HWND hWnd = CWnd::FromHandle(CWindow::GetWindow(GW_OWNER));
    mciOpenParms.dwCallback = (DWORD)AfxGetMainWnd()->GetSafeHwnd();
    mciPlayParms.dwCallback = (DWORD)AfxGetMainWnd()->GetSafeHwnd();

    if(dwReturn = mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)&mciPlayParms))
    {
        ShowError(dwReturn);
        mciSendCommand(wDeviceID,MCI_CLOSE,0,NULL);
        return false;
    }
    return true;
}

void playMedia::ShowError(DWORD err)
{
    char buf[256];
    mciGetErrorString(err,buf,sizeof(buf));
    AfxMessageBox(buf,MB_OK | MB_ICONEXCLAMATION);
}

그 후에 음악을 재생시킬 파일에 맨위에 다음을 입력해주세요
playMedia g_Media;

그리고 음악을 재생시킬 함수 안에는
m_Media.play(" I do - 비.mp3");
I do - 비.mp3 안에 재생시키실 파일 이름을 적어주시면 됩니다.~

그리고 DirectX에서 재생하는 방법은 약간 저수준 방식입니다.
덕분에 지지직 거리는 음이나, 노이즈등 여러 효과를 넣을 수 있게 되었죠.
DirectX에서는 사운드 버퍼라는 것을 통해 사용자가 직접 음악 파일의 내용을 불러와서 그 안에 채워서 재생하는 방식입니다.
물론 현재 제가 가르쳐드린 방식도 그런 방식이지만, 그 내부 처리는 생략한 것 입니다.

그럼 즐거운 프로그래밍 하세요 ~//
?

List of Articles
번호 제목 글쓴이 날짜 조회 수
387 변수 - 스크립트의 수 ? 덩키동크 2005.06.07 322
386 xp 질문했던거 또질문 -_-;; メIllusion。 2005.06.07 150
385 xp 질문했던거 또질문 -_-;; Mr.kim 2005.06.07 168
» WINAPI 에서.. 소리재생하는 방법.. 하앙e 2005.06.07 496
383 제발 몇가지 답변좀요!!!ㅜ,.ㅜ 이클립티스 2005.06.06 257
382 대화창 투명화좀. 늑대소년 2005.06.06 134
381 대화창 투명화좀. 뱀신의신교 2005.06.06 161
380 RPGXP로 이런 시스템 가능한가요>? Mr.kim 2005.06.06 390
379 RPGXP로 이런 시스템 가능한가요>? 꼬락서니 2005.06.06 620
378 대화할떄의 글씨색 바꾸는 방법좀... 칼브 2005.06.06 476
377 Dunky's answer ! 덩키동크 2005.06.06 155
376 가끔씩... Tv에서... 내마음블루 2005.06.06 516
375 Dunky's answer ! 덩키동크 2005.06.06 191
374 또 xp 버그인듯한 발견 file Mr.kim 2005.06.06 185
373 XP문제...!! 도와주세요 ㅠ.ㅠ メIllusion。 2005.06.06 167
372 XP문제...!! 도와주세요 ㅠ.ㅠ 야라 2005.06.06 205
371 레벨업시 스텟올리는 스크립트 세이브 버그 질문.. ЁЖЙ 2005.06.06 351
370 대화할떄의 글씨색 바꾸는 방법좀... 덩키동크 2005.06.06 275
369 원엠프 방송하는법 자세히 가르쳐 주십쇼, 샤아 2005.06.06 633
368 원엠프 방송하는법 자세히 가르쳐 주십쇼, KBOY∮ 2005.06.06 863
Board Pagination Prev 1 ... 418 419 420 421 422 423 424 425 426 427 ... 442 Next
/ 442


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)