音乐播放器实现上一首,下一首,循环,单曲,列表,随机,单曲循环功能非常感谢

ABC好难 2016-06-11 02:51:14
// PC05Dlg.h : 头文件
//

#pragma once
#include "mmsystem.h"
#pragma comment(lib,"winmm.lib")
#include "Digitalv.h"//这里是设置音量时需要添加的头文件
#include "afxwin.h"

// CPC05Dlg 对话框
class CPC05Dlg : public CDialogEx
{
// 构造
public:
CPC05Dlg(CWnd* pParent = NULL); // 标准构造函数
MCI_OPEN_PARMS open1;
MCI_PLAY_PARMS play1;
MCI_SET_PARMS m_set;
UINT s;
MCIDEVICEID m_id;
MCI_SET_PARMS m_settime;
CString str;
CString str1;
// 对话框数据
enum { IDD = IDD_PC05_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持


// 实现
protected:
HICON m_hIcon;

// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnClickedOpen();//打开
afx_msg void OnClickedPlay();//播放
afx_msg void OnClickedStop();//暂停
afx_msg void GoPrevious();//上一首
afx_msg void GoNext();//下一首
private:
int h;
DWORD cur;
DWORD len;
CProgressCtrl m_pro;
UINT volume;
CString current;
CString length;
BOOL m_isPlay;
BOOL m_isOpen;
CString m_songPath;
int m_songIndex;
public:
afx_msg void OnTimer(UINT_PTR nIDEvent);

private:
// int m_volume;
public:

// afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
CSliderCtrl m_volume;
// afx_msg void OnStnClickedTime();
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
//afx_msg void OnBnClickedAddDlg();
afx_msg void OnSelchangeList();
CListBox m_playList;
CString m_playListStr;
CString str4;
private:
int m_index;
int zflag;
public:
afx_msg void OnClickedFolder();
afx_msg void OnDblclkList();
afx_msg void OnBnClickedNext();
afx_msg void OnBnClickedBefore();
// afx_msg void OnBnClickedButton5();
// afx_msg void OnBnClickedButton4();
afx_msg void OnBnClickedDelete();
afx_msg void OnBnClickedClear();
};
...全文
2486 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
忘世麒麟 2016-06-14
  • 打赏
  • 举报
回复
引用 2 楼 qq_31540915 的回复:
前面的变量已经给出,求尽快回复,非常感谢
你需要能控制一首歌的播放:开始,暂停(这个功能可以暂时别做),停止 所谓上一首,下一首:你将所有的歌曲都保存到一个列表中(vector list 都行). 当单击上一首的时候,先停止当前正在播放的.然后从列表中获取上一个变量,直接播放,下一首同理 ------- 单曲:单曲的意思是这样的,当播放完一首之后,传递给同一首的路径给播放 列表:略 随机:获取列表中的歌曲数量,然后通过一个srand函数获取一个值n,从第一首歌开始在列表中往下走n步,获取该元素,播放 ------------------------- 大学时候就做过.祝你好运
赵4老师 2016-06-12
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
    srand(time(NULL));
    printf("shuffle 0..n-1 demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
            for (i=n;i>0;i--) {/* 打乱0~n-1 */
                a=i-1;b=rand()%i;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=0;i<n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
    printf("shuffle 1..n demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
            for (i=n;i>1;i--) {/* 打乱1~n */
                a=i;b=rand()%i+1;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=1;i<=n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
}
ABC好难 2016-06-11
  • 打赏
  • 举报
回复
前面的变量已经给出,求尽快回复,非常感谢
ABC好难 2016-06-11
  • 打赏
  • 举报
回复
// PC05Dlg.cpp : 实现文件 // #include "stdafx.h" #include "PC05.h" #include "PC05Dlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CPC05Dlg 对话框 CPC05Dlg::CPC05Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(CPC05Dlg::IDD, pParent) , m_playListStr(_T("")) , str4(_T("")) , m_index(-1) , zflag(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); s=-1; m_id=NULL; m_isOpen=false;//打开 m_isPlay=false;//播放 length=L"00:00"; current=L"00:00"; h=0; len=0;//长度 cur=0; volume=700; m_playListStr=_T(" ");//歌曲列表 m_songIndex=-1;//当前歌曲位置 zflag=0; } void CPC05Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_VOLUME, m_volume); DDX_Control(pDX, IDC_LIST, m_playList); DDX_LBString(pDX, IDC_LIST, m_playListStr); } BEGIN_MESSAGE_MAP(CPC05Dlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_OPEN, &CPC05Dlg::OnClickedOpen) ON_BN_CLICKED(IDC_PLAY, &CPC05Dlg::OnClickedPlay) ON_BN_CLICKED(IDC_STOP, &CPC05Dlg::OnClickedStop) ON_BN_CLICKED(IDC_BEFORE, &CPC05Dlg::GoPrevious) ON_BN_CLICKED(IDC_NEXT, &CPC05Dlg::GoNext) ON_WM_TIMER() ON_WM_HSCROLL() //ON_BN_CLICKED(IDC_ADD_DLG, &CPC05Dlg::OnBnClickedAddDlg) ON_LBN_SELCHANGE(IDC_LIST, &CPC05Dlg::OnSelchangeList) ON_BN_CLICKED(IDC_FOLDER, &CPC05Dlg::OnClickedFolder) ON_LBN_DBLCLK(IDC_LIST, &CPC05Dlg::OnDblclkList) ON_BN_CLICKED(IDC_QIAN, &CPC05Dlg::OnBnClickedNext) ON_BN_CLICKED(IDC_HOU, &CPC05Dlg::OnBnClickedBefore) ON_BN_CLICKED(IDC_DELETE, &CPC05Dlg::OnBnClickedDelete) ON_BN_CLICKED(IDC_CLEAR, &CPC05Dlg::OnBnClickedClear) END_MESSAGE_MAP()

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧