|
1、mciSendCommand函數(shù)聲明
MCIERROR mciSendCommand(MCIDEVICEID IDDevice,UINT uMsg,DWORD fdwCommand,DWORD_PTP dwParam)
IDDevice:MCI設(shè)備標(biāo)識(shí)符,用于接收命令消息。
uMsg:命令消息。
fdwCommand:命令消息風(fēng)格。
dwParam:命令消息相關(guān)參數(shù)。
功能:發(fā)送一命令消息到指定MCI設(shè)備。函數(shù)調(diào)用成功,返回零值;否則返回零。
2、MCI_OPEN_PARMS結(jié)構(gòu)聲明
typedef struct{
DWORD_PTR dwCallback;
MCIDEVICED wDeviceID;
LPCTSTR lpstrDeviceType;
LPCTSTR lpstrElementName;
LPCTSTR lpstrAlias;
}MCI_OPEN_PARAMS
dwCallback:用于MCI_NOTIFY風(fēng)格的窗口句柄。
wDeviceID:設(shè)備ID號(hào)。
lpstrDeviceType:設(shè)備類型名。
lpstrElementName:設(shè)備參數(shù)。
lpstrAlias:設(shè)備別名。
功能:包含MCI_OPEN信息。
3、MCI_STATUS_PARMS結(jié)構(gòu)聲明
typedef struct{
DWORD_PTR dwCallback;
DWORD dwReturn;
DWORD dwItem;
DWORD dwTrack;
}MCI_STATUS_PARMS
dwCallback:用于MCI_NOTIFY風(fēng)格的窗口句柄。
dwReturn:包含將返回的信息。
dwItem:詢問(wèn)內(nèi)容。
dwTrack:Track的長(zhǎng)度。
功能:包含MCI_STATUS命令信息。
4、MCI_SET_PARMS結(jié)構(gòu)聲明
typedef struct{
DWORD_PTR dwCallback;
DWORD dwTimeFormat;
DWORD dwAudio;
}MCI_SET_PARMS
dwCallback:用于MCI_NOTIFY風(fēng)格的窗口句柄。
dwTimeFormat:設(shè)備格式。
dwAudio:音頻輸出信道。
功能:包含MCI_SET命令信息。
5、MCI_PLAY_PARMS結(jié)構(gòu)聲明
typedef struct{
DWORD_PTR dwCallback;
DWORD dwFrom;
DWORD dwTo;
}MCI_PLAY_PARMS
dwCallback:用于MCI_NOTIFY風(fēng)格的窗口句柄。
dwFrom:開始播放位置。
dwTo:結(jié)束播放位置。
功能:包含MCI_PALY命令信息。
一、創(chuàng)建對(duì)話框應(yīng)用程序
二、編輯對(duì)話框資源

三、添加變量、函數(shù)
1、添加變量

2、添加函數(shù)
a、添加成員函數(shù)

b、添加消息響應(yīng)函數(shù)

四、添加庫(kù)模塊

五、添加代碼
1、添加包含語(yǔ)句:
// CD播放器Dlg.cpp : implementation file
#include "stdafx.h"
#include "CD播放器.h"
#include "CD播放器Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <MMSystem.h>
2、為函數(shù)添加代碼:
BOOL CCDPlayerDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
::mciSendCommand (m_wDeviceID, MCI_STOP, NULL, NULL);
::mciSendCommand (m_wDeviceID, MCI_CLOSE, MCI_WAIT, NULL);
return CDialog::DestroyWindow();
}
void CCDPlayerDlg::OnExit()
{
// TODO: Add your control notification handler code here
this->OnCancel();
}
void CCDPlayerDlg::OnPlay()
{
// TODO: Add your control notification handler code here
MCI_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
int ireturn=0;
ireturn=::mciSendCommand (NULL,
MCI_OPEN,
MCI_WAIT | MCI_OPEN_SHAREABLE|
MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID ,
(DWORD)(LPVOID) &OpenParms); //打開MCI設(shè)備
if(ireturn==0)
{
m_wDeviceID=OpenParms.wDeviceID;
MCI_STATUS_PARMS StatusParms;
StatusParms.dwItem=MCI_STATUS_MEDIA_PRESENT;
ireturn=::mciSendCommand (m_wDeviceID,
MCI_STATUS, MCI_STATUS_ITEM,
(DWORD)(LPVOID) &StatusParms); //獲得設(shè)備的信息
if(ireturn==0)
{
StatusParms.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
mciSendCommand (m_wDeviceID,
MCI_STATUS, MCI_STATUS_ITEM,
(DWORD)(LPVOID) &StatusParms);
UINT cdnum=StatusParms.dwReturn; //獲得曲目的數(shù)量
}
}
MCI_SET_PARMS SetParms;
SetParms.dwTimeFormat = MCI_FORMAT_TMSF;
::mciSendCommand (m_wDeviceID,
MCI_SET,
MCI_WAIT | MCI_SET_TIME_FORMAT,
(DWORD)(LPVOID) &SetParms);
::mciSendCommand (m_wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL);
MCI_PLAY_PARMS PlayParms;
PlayParms.dwFrom=MCI_MAKE_TMSF(1,0,0,0); //選擇第一個(gè)曲目
::mciSendCommand (m_wDeviceID, MCI_PLAY, MCI_FROM,
(DWORD)(LPVOID) &PlayParms); //播放曲目
}
void CCDPlayerDlg::OnStop()
{
// TODO: Add your control notification handler code here
::mciSendCommand (m_wDeviceID, MCI_STOP, NULL, NULL);
}
void CCDPlayerDlg::OnTray(WPARAM wParam, LPARAM lParam)
{
UINT msg=UINT(lParam);
if(msg==WM_LBUTTONDBLCLK)
{
this->ShowWindow(SW_SHOWNOACTIVATE);
}
}
六、編譯
七、運(yùn)行

|
|