// 古董音乐播放器:主框架
#include
#include
void PopFileInitialize(HWND);
BOOL PopFileOpenDlg(HWND, PTSTR, PTSTR);
void paly_mp3(char *dress);
void pause_mp3();
void reset_mp3();
struct
{
int iStyle;
TCHAR *szText;
}
button[] = {
BS_PUSHBUTTON, TEXT("OPEN"),
BS_PUSHBUTTON, TEXT("PLAY"),
BS_PUSHBUTTON, TEXT("PAUSE"),
BS_PUSHBUTTON, TEXT("RESET"),
BS_PUSHBUTTON, TEXT("EXIT"),
};
#define NUM (sizeof button/sizeof button[0])
TCHAR szAppName[] = TEXT("BtnLook");
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,?
PSTR szCmdLine, int iCmdShow)
{
HWND ? ? hwnd;
MSG ? ? ?msg;
WNDCLASS wndclass;
www.gsm-guard.net = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = (HICON)::LoadImage(NULL, "bitbug_favicon.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
//wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hbrBackground = CreateSolidBrush(RGB(255,0,0));
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("This program requires Windows NT !"), szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, TEXT("古董音乐播放器"),
WS_OVERLAPPEDWINDOW,
200, 200,
290, 160,
NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hwndButton[NUM];
static RECT rect;
static HDC hdc;
static TCHAR szBuffer[50];
static TCHAR szTop[] = TEXT("当前播放歌曲:");
static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH];
static int cxChar, cyChar;
static PAINTSTRUCT ps;
static int i;
switch (message)
{
case WM_CREATE:
cxChar = LOWORD(GetDialogBaseUnits());
cyChar = HIWORD(GetDialogBaseUnits());
for (i = 0; i < NUM; i++)
hwndButton[i] = CreateWindow(TEXT("button"),
button[i].szText,
WS_CHILD | WS_VISIBLE | button[i].iStyle,
cyChar*(1 + 3 * i), cyChar * 5,
6 * cxChar, 7 * cyChar / 4.5,
hwnd, (HMENU)i, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
PopFileInitialize(hwnd);
EnableWindow(GetDlgItem(hwnd, 1), FALSE);
EnableWindow(GetDlgItem(hwnd, 2), FALSE);
EnableWindow(GetDlgItem(hwnd, 3), FALSE);
return 0;
case WM_SIZE:
rect.left = 24 * cxChar;
www.gsm-guard.net = 2 * cyChar;
rect.right = LOWORD(lParam);
rect.bottom = HIWORD(lParam);
return 0;
case WM_PAINT:
InvalidateRect(hwnd, &rect, TRUE);
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc, TRANSPARENT);
TextOut(hdc, 2 * cxChar, cyChar, szTop, lstrlen(szTop));
EndPaint(hwnd, &ps);
return 0;
case WM_DRAWITEM:
return 0;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case 0:
if (!PopFileOpenDlg(hwnd, szFileName, szTitleName))
{
MessageBox(hwnd, TEXT("未选择音乐歌曲!"), szTitleName, 0);
szFileName[0] = '\0';
szTitleName[0] = '\0';
}
else
{
hdc = GetDC(hwnd);
TextOut(hdc, 2 * cxChar, 3 * cyChar, szTitleName, lstrlen(szTitleName));
EnableWindow(GetDlgItem(hwnd, 0), FALSE);
EnableWindow(GetDlgItem(hwnd, 1), TRUE);
EnableWindow(GetDlgItem(hwnd, 2), TRUE);
EnableWindow(GetDlgItem(hwnd, 3), TRUE);
}
return 0;
case 1:
paly_mp3(szFileName);
return 0;
case 2:
pause_mp3();
return 0;
case 3:
reset_mp3();
EnableWindow(GetDlgItem(hwnd, 0), TRUE);
EnableWindow(GetDlgItem(hwnd, 1), FALSE);
EnableWindow(GetDlgItem(hwnd, 2), FALSE);
szFileName[0] = '\0';
szTitleName[0] = '\0';
return 0;
case 4:
exit(0);
return 0;
}
return 0;
case WM_DESTROY:
exit(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
///******打开文件对话框********/ #include
/***实现播放*****/ /*** 播放,暂停,重置 *****/ #include
一、添加媒体操作变量:
CWMPPlayer40 mPlayer4;//插件变量 ?CWMPSettings mSet;?//setting变量 ?CWMPControls mmCtrl;// Controls变量 ?CWMPPlaylist mlist; //list变量
CWMPMedia mMedia;//媒体文件变量 ?
二、OnInitDialog()
mPlayer4.put_URL(_T("F:\\CloudMusic\\刘珂矣 - 如是.mp3"));
mmCtrl = static_cast
?----------------------------------------------------------------------------------------------------------------
CFileDialog file(TRUE,_T(""),_T(""), ??OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, ??_T("(*.*)|*.*|(*.mp3)|*.mp3|(*.avi)|*.avi")); ?if (file.DoModal()) ?{ ??mPlayer4.put_URL(file.GetPathName()); ??SetDlgItemText(IDC_BUTTON4,mPlayer4.get_URL()); ??mMedia = static_cast ??TRACE("\n\n\n\n"); ?} ------------------------------------------------------------------------------- void CSqlAdoDlg::OnBnClickedButton7() { ?// TODO: Add your control notification handler code here ?CString str; ?GetDlgItemText(IDC_BUTTON7,str); ?if (str==_T("暂停")) ?{ ??mmCtrl.pause(); ??SetDlgItemText(IDC_BUTTON7,_T("继续")); ?}else{ ??www.gsm-guard.net(); ??SetDlgItemText(IDC_BUTTON7,_T("暂停")); ?} ? } MFC入门-MCI简单音乐播放器实现 实现功能: 1)????????播放 2)????????暂停/恢复 3)????????停止 4)????????音量调节 ? 实现步骤: 1创建工程 打开VS2010,新建-》文件-》新建项目: 点击确认之后: 点击下一步: 选择“基于对话框”,点击“下一步”: 点击“下一步”: 点击“下一步”: 默认选项,点击“完成” 默认生成的界面。 2界面制作 界面制作如下: 音乐播放界面 这里说明每个控件对应的Id: 文件名称后面的编辑框:IDC_filename 浏览按钮:IDC_filechoice 播放按钮:IDC_play 暂停按钮:IDC_pause 停止按钮:IDC_stop 音量调节里面的编辑框:IDC_volume 音量滑动条:IDC_SLIDER1 版本说明按钮:IDC_about 退出软件按钮:IDC_exitbtn 软件说明界面: 3逻辑功能实现 3.1软件说明: void Cmfc_music_playerDlg::OnBnClickedabout() { // TODO: 在此添加控件通知处理程序代码 CAboutDlg dlg; dlg.DoModal(); //弹出软件说明 } 3.2退出软件: void Cmfc_music_playerDlg::OnBnClickedexitbt() { // TODO: 在此添加控件通知处理程序代码 CDialog::OnCancel(); //退出 } 3.3加载 添加头文件和库: #include #include #pragma comment(lib, "Winmm.lib") //定义三个全局变量 HWND m_hWnd; DWORD DeviceId; MCI_OPEN_PARMS mciopenparms; //加载 void Load(HWND hWnd, CString strFilepath) { m_hWnd = hWnd; mciSendCommand(DeviceId, MCI_CLOSE, 0, 0); //在加载文件前先清空上一次播放的设备 mciopenparms.lpstrElementName = strFilepath; //将音乐文件路径传给设备 DWORD dwReturn; if (dwReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT, (DWORD)(LPVOID)&mciopenparms)) { //如果打开玩家失败,将出错信息储存在buffer,并显示出错警告 char buffer[256]; mciGetErrorString(dwReturn, buffer, 256); //获取错误码对应的错误信息 MessageBox(hWnd, buffer, "出错警告!", MB_ICONHAND | MB_ICONERROR | MB_ICONSTOP); //弹出错误信息提示对话框 } DeviceId = mciopenparms.wDeviceID; //打开文件成功就关联文件到设备 } 3.4播放 //播放 void play() { MCI_PLAY_PARMS mciplayparms; mciplayparms.dwCallback = (DWORD)m_hWnd; mciplayparms.dwFrom = 0; //每次播放都是从0开始播放 mciSendCommand(DeviceId, MCI_PLAY, MCI_FROM | MCI_NOTIFY, (DWORD)(LPVOID)&mciplayparms); } 3.5暂停 void pause() { mciSendCommand(DeviceId, MCI_PAUSE, 0, 0); } 3.6恢复 void resume() { mciSendCommand(DeviceId, MCI_RESUME, 0, 0); } 3.7停止 void stop() { mciSendCommand(DeviceId, MCI_STOP, 0, 0); mciSendCommand(DeviceId, MCI_CLOSE, 0, 0); //当点击停止按钮时,将所有的信息都清除掉 } 3.8音量调节 //设置音量 DWORD setVolume(DWORD vol) { MCI_DGV_SETAUDIO_PARMS setvolume; //设置音量的参数结构体 setvolume.dwCallback = NULL; // setvolume.dwItem = MCI_DGV_SETAUDIO_VOLUME; //动作是设置音量 setvolume.dwValue = vol; //音量值是vol mciSendCommand(DeviceId, MCI_SETAUDIO, MCI_DGV_SETAUDIO_ITEM | MCI_DGV_SETAUDIO_VALUE, (DWORD)(LPVOID)&setvolume); return 0; } 4界面事件关联 4.1文件选择 void Cmfc_music_playerDlg::OnBnClickedfilechoice() { // TODO: 在此添加控件通知处理程序代码 char szFileFilter[] = "mp3文件(*.mp3)|*.mp3|" "wma文件(*.wma)|*.wma|" "wav文件(*.wav)|*.wav|" "所有文件(*.*)|*.*|"; CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY, szFileFilter); if (dlg.DoModal() == IDOK) { CString strFilepath = dlg.GetPathName(); CString strFilename = dlg.GetFileName(); SetDlgItemText(IDC_filename, strFilename); Load(this->m_hWnd, strFilepath); } GetDlgItem(IDC_play)->EnableWindow(true); //文件读取成功时所有按钮变成可选 GetDlgItem(IDC_pause)->EnableWindow(true); GetDlgItem(IDC_stop)->EnableWindow(true); } 4.2播放按钮 void Cmfc_music_playerDlg::OnBnClickedplay() { // TODO: 在此添加控件通知处理程序代码 play(); SetDlgItemText(IDC_pause, "暂停"); } 4.3暂停/恢复按钮 void Cmfc_music_playerDlg::OnBnClickedpause() { // TODO: 在此添加控件通知处理程序代码 CString strTemp; GetDlgItemText(IDC_pause, strTemp); //获取按钮的状态 if (strTemp.Compare("暂停") == 0) { pause(); SetDlgItemText(IDC_pause, "恢复"); } if (strTemp.Compare("恢复") == 0) { resume(); SetDlgItemText(IDC_pause, "暂停"); } } 4.4停止按钮 void Cmfc_music_playerDlg::OnBnClickedstop() { // TODO: 在此添加控件通知处理程序代码 stop(); SetDlgItemText(IDC_pause, "暂停"); GetDlgItem(IDC_play)->EnableWindow(false); //当按下stop的时候,播放和暂停不可选 GetDlgItem(IDC_pause)->EnableWindow(false); } CSDN下载:http://www.gsm-guard.net/detail/u012377333/9520199 git源码:support@www.gsm-guard.net:u012377333/mfc_music_player.git相关推荐
如何设置服装关键词排名
如何设置服装关键词排名
如何突破表格关键词排名的关键词
Java笔记--java逐行写
sqlserver直接附加数据
Linux 使用top命令查看
正品北京5032立式铣床(北京
如何测试rs232串口(如何测
谷歌nexus4,请输入搜索内
炒股新手需要了解哪些买卖技巧?
币安合约推出QTUM永续合约
高性能MySQL
PHP中常见的错误类型及其解决
如何使用PHP获取当月第几周(
7 个实用的 PHP 内置函数
设计公司网站优化方案怎么写
医院的网站怎么优化
如何修改文件格式后缀名,手机如
vs2013只能安装c【vs只
vs2022TODO高亮【vs
32768晶振产生1hz脉冲(
视频
阿里云centos7.2自行安
Centos7上使用yum安装
0条大神的评论