U E D R , A S I H C RSS

5인용C++스터디/멀티미디어

  • 꼭 들 것들
    • 로그램 떻게 는가?
    • 로그램 떻게 는가?

1.



1-1) PlaySound

MFC는 멀미디 는다. Win32 API 미디기 때문 MFC 로 만들 다.
드를 는 API를 보.

~cpp 
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);

pszSound : . 경로를 다.

hmod : 리 는 Wave 를 가 데, 그 는 NULL로 다.

fdwSound : 류를 래그다. 따라 , 두 달라다. 래그 몇 가.

- SND_FILENAME : pszSound는 다.
- SND_ASYNC : 동기다. 바로 리므로 다른 바로 다.
- SND_LOOP : 드를 반복 다. 래그는 반드 SND_ASYNC 다.
- SND_SYNC : 동기다. 끝나기 는 리 는다.

) AppWizard Sound라는 로 SDI 를 만든다.
WM_LBUTTONDOWN메 들러를 만들고 OnLButtonDown 들러과 같 드를 다.


~cpp 
#include "mmsystem.h"
void CSoundView::.....
{
	PlaySound("Battle.wav", NULL, SND_SYNC);

	CView:....
}
PlaySound 려면 mmsystem.h include 고,
Project/ Settings/Link winmm.lib를 링 다.

르면 리가 날 것다. 드가 며 같 디렉 Battle.wav라는 다.

1-2) 동기

만든 를 보면 PlaySound 료되기 는 리 므로 다. 런 방법 동기라고 다.
반대로 PlaySound 놓고 곧바로 리동기 다.

는 SND_LOOP 래그를 보고, WM_RBUTTONDOWN 메 들러 만들.


~cpp 
void CSoundView::OnLB.........
{
	PlaySound("Battle.wav", NULL, SND_ASYNC | SND_LOOP);

	CView:....
}

void CSoundView::OnRB......
{
	PlaySound(NULL, NULL, 0);

	CView:....
}

SND_LOOP 래그를 면 반복 나 배경 다. 려면 PlaySound 를 NULL로 면 된다. 따라, 르면 될 것다. SND_LOOP 래그는 반드 SND_ASYNC 다. 만 동기 로 반복면 무로 빠 다.

1-3) 리 Wave

는 것 기는 다 디 므로 반 가 느리다. 따라 놓고 리 는 방법는 것 다.

만든 Battle.wav .
메뉴 Import 메뉴 고 리 는 Wave 다. 그러면 IDR_WAVE1라는 ID로 리 될 것다.
드를 려면 PlaySound SND_RESOURCE 래그를 ID를 다. 두 는 리를 가 는데 MFCAfxGetInstanceHandle() 다. 다과 같 드를 .


~cpp 
void CSoundView::OnLButtonDown(UINT nFlags, CPoint point)
{
	PlaySound(MAKEINTRESOURCE(IDR_WAVE1), AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
	CView:OnLButtonDown(nFlags, point);
}
렇게 wav Battle.wav 게 된다.

1-4) MCI (Media Control Interface)

PlaySound는 메모리 1-2 드 밖 다는 , Wave다는 , 가 개 다는 단 다.
MCI는 멀미디 독립브러리다. PlaySound 러 가 만, 방법 더 복다.


Upload:SoundMwm.zip



2. 동


2-1) PlayAVI

MCI를 면 동 다. AppWizardPlayAVI라는 SDI 를 만들고 WM_LBUTTONDOWN 메 들러 WM_DESTROY 메 들러를 다과 같 다.


~cpp 
HWND hWndAVI=0;
void CPlayAVIView::OnLButtonDown...
{
	if(hWndAVI) {
	MCIWndClose(hWndAVI);
	MCIWndDestroy(hWndAVI);
	hWndAVI=0;
	}
	hWndAVI=MCIWndCreate(this->m_hWnd, AfxGetInstanceHandle(), 0, "cf3.avi");
	if(hWndAVI) {
	MCIWndPlay(hWndAVI);
	}
	CView::OnLButtonDown(nFlags, point);
}

void CPlayAVIView::OnDestroy()
{
	CView::OnDestroy();
	MCIWndDestroy(hWndAVI);
}

는 Video fot window 라브러리를 므로 뷰 vfw.h를 루드 다.


~cpp 
#include "PlayAVIDoc.h"
#include "PlayAVIView.h"
#include <vfw.h>

브러리를 록 Project/Settings/Link vfw32.lib를 다. 그리고 동 디렉 두면 된다.

MCIWnd 르면 만들다. 그 hWndAVI가 면 먼 MCIWnd를 닫는 다. MCIWnd를 만드는 MCIWndCreate 다.

~cpp 
HWND MCIWndCreate(HWND hwndParent, HINSTANCE hinstance, DWORD dwStyle, LPSTR szFile);

hWndParent: 부모다. NULL, 린다.
hInstance: MCIWnd 다.
dwStyle: MCIWnd, 동 (래그)다.
szFile: MCIWnd , 또는 AVI 다.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:18
Processing time 0.0221 sec