// 古董音乐播放器:主框架
#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;
m.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;
m.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{ ??m.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://m.gsm-guard.net/detail/u012377333/9520199 git源码:support@m.gsm-guard.net:u012377333/mfc_music_player.git相关推荐
2023年IT行业:哪些工作机
IT行业国家排名揭晓:科技巨头
企业并购案例论文题目,与操作:
IT行业未来发展前景:技术、市
年网络安全重大事件:网络战无声
风云激荡的科技江湖,巨头们的崛
a股科技龙头公司名单,揭秘A股
全球网络安全企业100强有哪些
it行业新技术有哪些方面,革命
科技股份龙头股:引领未来,实现
年企业并购大事件:策略、影响与
数据新闻背后的故事:如何通过案
IT行业全球排名榜:揭示数字时
IT行业地域分布大揭秘:谁将成
it行业就业前景好吗知乎,充满
科技公司总市值排行榜最新,战:
科技行业巨头有哪些公司上市,全
市值前十的科技公司有哪些,市值
全球网络安全事件案例分析:经验
万花筒:从人工智能到区块链,再
科技股份龙头老大,领跑时代的创
年企业并购案例分析报告:揭示商
数据新闻案例分析模板怎么写,挖
it行业全球排名第一,排名第一
0条大神的评论