- 발 꼭 들가 것들
- 로그램 드 떻게 는가?
- 로그램 동 떻게 는가?
- 로그램 드 떻게 는가?
1. 드 ¶
~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 : 동기된 를 다. 드 가 끝나기 는 리 는다.
- SND_ASYNC : 동기된 를 다. 바로 리므로 다른 바로 다.
- SND_LOOP : 드를 반복로 다. 래그는 반드 SND_ASYNC 께 되 다.
- SND_SYNC : 동기된 를 다. 드 가 끝나기 는 리 는다.
~cpp #include "mmsystem.h" void CSoundView::..... { PlaySound("Battle.wav", NULL, SND_SYNC); CView:.... }
그 고 로 르면 리가 날 것다. 드드가 되 며 같 디렉리 Battle.wav라는 것다.
1-2) 동기
만든 를 보면 PlaySound 는 드 가 료되기 는 리 므로 동 떤 다. 런 방법 동기 방라고 다.
반대로 PlaySound가 를 놓고 곧바로 리는 동기 방 다.
는 SND_LOOP 래그를 보고, WM_RBUTTONDOWN 메 들러 같 만들보.
반대로 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를 다. 두 는 리를 가 들 는데 MFC는 AfxGetInstanceHandle() 로 들 구 다. 다과 같 드를 보.
만든 를 Battle.wav 보.
리 뷰 메뉴 Import 메뉴목 고 리 고 는 Wave 다. 그러면 IDR_WAVE1라는 ID로 리 될 것다.
리 된 드를 려면 PlaySound SND_RESOURCE 래그를 고 리 ID를 다. 두 는 리를 가 들 는데 MFC는 AfxGetInstanceHandle() 로 들 구 다. 다과 같 드를 보.
~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 가 못는 러 가 만, 방법 더 복다.
MCI는 멀미디 대 독립로 공는 라브러리다. 것 PlaySound 가 못는 러 가 만, 방법 더 복다.
![]() |
2. 동 ¶
2-1) PlayAVI
MCI를 면 동 게 다. AppWizard로 PlayAVI라는 SDI 로를 만들고 WM_LBUTTONDOWN 메 들러 WM_DESTROY 메 들러를 다과 같 다.
MCI를 면 동 게 다. AppWizard로 PlayAVI라는 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);