⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wave.cpp

📁 郑阿齐VC教材
💻 CPP
字号:
#include "stdafx.h"
#include "Wave.h"

CWave::CWave()					// 在构造函数中添加一些初始代码
{
	m_bOpened = FALSE;			// 设备没有打开
	m_wDeviceID = 0;			// 设备号为0 
}

CWave::~CWave()					// 在析构函数中添加关闭设备代码
{
	Close();					// 关闭设备
}

BOOL CWave::Play(CWnd *pWnd)	// 在窗口中播放设备
{
	Stop();						// 停止播放设备,设备复位
	MCI_PLAY_PARMS playParms;	// 定义一个播放结构变量
	playParms.dwCallback=(DWORD)pWnd->m_hWnd;
								// 设置回调窗口句柄
	mciSendCommand (m_wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL);
								// 定位到设备的开始
	if (mciSendCommand (m_wDeviceID, MCI_PLAY, MCI_NOTIFY,
  						(DWORD)(LPVOID) &playParms))
	/* 播放设备并向回调窗口发送MCI_NOTIFY消息 */
		return FALSE;
	else
		return TRUE;
}

void CWave::Stop()					// 停止播放
{
	mciSendCommand (m_wDeviceID, MCI_STOP, NULL, NULL);
}

void CWave::Close()				// 关闭设备
{
	m_bOpened = FALSE;
	if (m_wDeviceID)	
	{
		mciSendCommand (m_wDeviceID, MCI_STOP, MCI_WAIT, NULL);
		mciSendCommand (m_wDeviceID, MCI_CLOSE, NULL, NULL);
	}
	m_wDeviceID = 0;
}

BOOL CWave::Open(CString waveFileName)	// 打开设备并调入音频波型文件
{
	if (m_bOpened) Close();					// 若设备打开,关闭它

	MCI_OPEN_PARMS openParms;
	openParms.lpstrDeviceType = "waveaudio";
	openParms.lpstrElementName = waveFileName;
	if (mciSendCommand (NULL, MCI_OPEN, 
		MCI_OPEN_ELEMENT | MCI_OPEN_TYPE|MCI_WAIT, 
		(DWORD)(LPVOID) &openParms))
		return FALSE;	
	// MCI_OPEN_ELEMENT指定音频波型文件保存在lpstrElementName中,
	// MCI_OPEN_TYPE指定设备类型保存在lpstrDeviceType中
	
	m_wDeviceID = openParms.wDeviceID;
	m_bOpened = TRUE;

	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -