응용프로그램 종류를 [대화 상자 기반]으로

Download Report

Transcript 응용프로그램 종류를 [대화 상자 기반]으로

14장. 멀티미디어
14. 멀티미디어
14.1 Wav 파일 재생
윈도우 멀티미디어 기본 라이브러리인 winmm.lib 를 이용하여
wav 파일을 재생해 본다.
14. 멀티미디어

실습 29
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Waveout)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
14. 멀티미디어
4. 버튼 1개를 이용해 아래와 같이 만든다.
IDC_BUTTON1
14. 멀티미디어
5. 상단 메뉴에서 프로젝트 – 속성 을 클릭한다.
14. 멀티미디어
6. 구성 속성 – 링커 – 입력 항목에서 추가 종속성에 winmm.lib
를 입력한 후 적용 - 확인을 누른다.
직접입력
14. 멀티미디어
7. 출력 버튼을 더블 클릭하고 맨 위쪽에 헤더 파일을 include 한다.
// WaveoutDlg.cpp : 구현 파일
#include
#include
#include
#include
"stdafx.h"
"Waveout.h"
"WaveoutDlg.h"
"afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include "mmsystem.h"
헤더파일 include
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
class CAboutDlg : public CDialogEx
{
14. 멀티미디어
8. 맨 아래쪽으로 이동해 다음 코드를 추가하고 실행해 본다.
void CWaveoutDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
PlaySound("c:\\windows\\media\\tada.wav", NULL, SND_ASYNC);
}
주의 : \ 2개임 !!
파일 있는 지 미리 확인할 것
14. 멀티미디어
14.2 MCI를 이용한 미디어 재생
MCI (Media Control Interface)를 이용하면 소리뿐 아니라
MIDI나 AVI 파일 등도 출력할 수 있다.
14. 멀티미디어

실습 30
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Wavemci)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
14. 멀티미디어
4. 버튼 1개를 이용해 아래와 같이 만든다.
IDC_BUTTON1
14. 멀티미디어
5. 상단 메뉴에서 프로젝트 – 속성 을 클릭한다.
14. 멀티미디어
6. 구성 속성 – 링커 – 입력 항목에서 추가 종속성에 winmm.lib
를 입력한 후 적용 - 확인을 누른다.
14. 멀티미디어
7. 출력 버튼을 더블 클릭하고 위쪽에 헤더 파일을 include 한다.
// WavemciDlg.cpp : 구현 파일
#include
#include
#include
#include
"stdafx.h"
"Waveout.h"
"WaveoutDlg.h"
"afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include "mmsystem.h"
static DWORD dwID;
헤더파일 include
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
14. 멀티미디어
8. 클래스 마법사를 실행하고 메시지 항목에서 WM_CREATE에 대해
처리기 추가를 하고 코드편집을 누른다.
14. 멀티미디어
9. 아래와 같이 코드를 추가한다.
int CWavemciDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 여기에 특수화된 작성 코드를 추가합니다.
MCI_OPEN_PARMS mciOpen;
파일이 존재하는지 미리 확인할 것.
mciOpen.lpstrDeviceType = "waveaudio";
mciOpen.lpstrElementName = "C:\\windows\\media\\tada.wav";
mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE |
MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
dwID = mciOpen.wDeviceID;
}
return 0;
14. 멀티미디어
10. 출력 버튼을 더블 클릭하고 아래 코드를 입력하고 실행해 본다.
void CWavemciDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
MCI_PLAY_PARMS mciPlay;
mciSendCommand(dwID,MCI_PLAY,NULL,(DWORD)&mciPlay);
}
14. 멀티미디어

참고

MCI Device Type 을 변경하면 다양한 미디어 출력이 가능하다.
mciOpen.lpstrDeviceType = " MCI Device Type ";
waveaudio
Wave 파일 연주
sequencer
MIDI 파일 연주
cdaudio
CD Audio 파일 연주
avivideo
AVI 파일 연주
mpegvideo
MP3 파일 연주
연습문제 1
* 앞의 9번항목에서 코드를 변경해 MIDI 파일을 연주해 본다.
int CWavemciDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 여기에 특수화된 작성 코드를 추가합니다.
MCI_OPEN_PARMS mciOpen;
mciOpen.lpstrDeviceType = "sequencer";
mciOpen.lpstrElementName = "C:\\windows\\media\\onestop.mid";
mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE |
MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
dwID = mciOpen.wDeviceID;
}
return 0;
연습문제 2
* 앞의 9번항목에서 코드를 변경해 MP3 파일을 Play해 본다.
mciOpen.lpstrDeviceType = "mpegvideo";
mciOpen.lpstrElementName = "
MP3 파일이 있는 절대 경로
(미리 다운받아 저장해 놓을 것)
";
연습문제 3
* 지난 주 공통대화상자를 이용해 MP3 파일을 선택해 Play해 본다.
새 프로젝트 생성할 것
연습문제 3
* 파일선택 더블 클릭하고 아래 코드 입력한다.
void CWaveoutDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
헤더파일도 include
#include "mmsystem.h"
static DWORD dwID;
OPENFILENAME oFn;
char lpstrFile[MAX_PATH]="";
memset(&oFn, 0, sizeof(OPENFILENAME));
oFn.lStructSize=sizeof(OPENFILENAME);
oFn.lpstrFilter="MP3 File\0*.mp3";
oFn.lpstrFile=lpstrFile;
oFn.nMaxFile=256;
if(GetOpenFileName(&oFn)==0)
{
MessageBox("파일을 열지 못했음", "경고", NULL);
}
else
{
MCI_OPEN_PARMS mciOpen;
mciOpen.lpstrDeviceType = "mpegvideo";
mciOpen.lpstrElementName = oFn.lpstrFile;
mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
dwID = mciOpen.wDeviceID;
MCI_PLAY_PARMS mciPlay;
mciSendCommand(dwID,MCI_PLAY,NULL,(DWORD)&mciPlay);
}
}
14. 멀티미디어
14.3 동영상 파일 재생하기
vfw32.lib 을 이용해 AVI 파일을 재생하도록 한다.
공통 대화상자를 이용해 파일을 찾아 열 수 있도록 한다.
14. 멀티미디어

실습 31
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Video)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
14. 멀티미디어
4. 아래와 같이 출력 버튼과 종료 버튼을 만든다.
IDC_BUTTON1
IDC_BUTTON2
14. 멀티미디어
5. 상단 메뉴에서 프로젝트 – 속성 을 클릭한다.
14. 멀티미디어
6. 구성 속성 – 링커 – 입력 항목에서 추가 종속성에 vfw32.lib
를 입력한 후 적용 - 확인을 누른다.
14. 멀티미디어
7.
열기 버튼을 더블 클릭하고 위쪽에 헤더 파일을 include 한다.
// VideoDlg.cpp : 구현 파일
#include
#include
#include
#include
"stdafx.h"
"Video.h"
"VideoDlg.h"
"afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include <Vfw.h>
HWND hAviWnd;
헤더파일 include
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
14. 멀티미디어
8. 아래쪽에 다음의 코드를 입력한다.
void CVideoDlg::OnBnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
char szText[100];
OPENFILENAME oFn;
char lpstrFile[MAX_PATH]="";
memset(&oFn, 0, sizeof(OPENFILENAME));
oFn.lStructSize=sizeof(OPENFILENAME);
oFn.hwndOwner=m_hWnd;
oFn.lpstrFilter="AVI File\0*.avi";
oFn.lpstrFile=lpstrFile;
oFn.nMaxFile=256;
oFn.lpstrInitialDir="C:\\";
계속
열기 공통대화상자 표시
14. 멀티미디어
if(GetOpenFileName(&oFn)==0)
{
MessageBox("파일을 열지 못했음", "경고", NULL);
}
else
{
sprintf(szText, "%s", oFn.lpstrFile);
hAviWnd=MCIWndCreate(m_hWnd, AfxGetInstanceHandle(), NULL, szText);
}
}
14. 멀티미디어
9.
종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton2()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
9.
실행 후 결과를 확인해 본다.
연습문제 4
* 강의 홈피 6강을 참조하여 다음과 같이 메뉴를 구성해 AVI 동영상
파일을 실행해 본다.