- 博客(937)
- 资源 (2)
- 收藏
- 关注
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 播放控制 实现播放功能
播放按钮播放音乐获取当前列表选中的mp3文件路径根据路径调用mci函数进行播放void CMyDlg::OnPlay() //播放按钮消息响应函数{ MCI_OPEN_PARMS open={0};//定义并初始化结构体 char str1[100]; //定义字符数组 POSITION pos=m_list.GetFirstSelectedItemPosition(); //获取用于选择的位置 if(pos==NULL) //如果选择为空 { MessageBox("当前没有选择!"
2020-05-28 08:57:45 464
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 识别数据文件信息
识别数据文件信息主要是指对mp3数据格式识别定义顺序代码如下typedef struct mp3_struct //自定义mp3结构体{ char heade[3]; //tag字符标记 char title[30]; //音乐文件名称 char arti[30]; //演唱者 char alb[30]; //专辑 char year[4]; //出版年份 char text[2...
2020-03-07 09:05:44 349
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 保存数据 判断文件添加列表
MP3文件相关信息显示在当前播放列表最后表示mp3文件是用户最近添加到程序... //省略部分代码int nRow = m_list.InsertItem(m_list.GetItemCount()+1,mp3.title) //插入行m_list.SetItemText(nRow,1,mp3.arti) //设置数据if(mp3.heade && "TAG") //判断...
2020-02-21 18:36:42 348
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 保存数据 文件标题关联歌曲文件路径 显示到列表控件
如果打开 对话框 选择需要添加的歌曲后创建文件对象关联 歌曲列表 以及 通过 文件打开对话框 选择的文件从mp3文件中读取相关信息到结构体变量mp3把变量内容写入 歌曲列表 文件存储... //省略部分代码CFile file1("歌曲列表.lw",CFile::modeReadWrite); //创建文件对象并关联该文件POSITION pt=filed.GetStartPosit...
2020-02-10 08:18:10 177
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 保存数据
添加歌曲 按钮 添加歌曲添加按钮添加消息响应函数void CMyDlg::OnAdd(){ CString strpath="MP3音乐(*.mp3){*.mp3||}";//过 滤文件列表 CFileDialog filed(true,NULL,NULL,OFN_HIDEREADONLY,strpath,NULL); //创建文件对象并打开 if(filed.DoModal()==...
2020-01-19 19:20:30 204
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 读取数据 操作歌曲列表文件
程序启动创建文件对象 从文件读取数据如果文件对象为空 表示程序第一次启动 需要用户创建文件否则 程序读取数据 并显示在控件列表Visual C++网络编程经典案例详解如果文件对象句柄为空 表示文件不存在 需要新建文件否则 用户可以对文件进行读取操作while(mpd.title!=NULL) //判断获取的文件标题{ file1.Read(&mpd,sizeof(mpd)...
2020-01-04 08:22:23 154
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 数据读取与播放控制 读取数据 封装曲目数据结构
数据封装在一个结构体中结构体命名为mp3data结构定义如下typedef struct mp3 //定义mp3文件数据结构体{ char heade[3]; //TAG字符标记 char title[30]; //音乐文件名称 char arti[30]; //演唱者 CString str; //路径字符串}mp3data;结构体,主要成员变量str其MP3文件完整路径...
2019-12-26 18:43:20 168
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 多线程通信 线程间通信 根据播放列表音乐序号判断mp3播放顺序
根据播放列表音乐序号判断mp3播放顺序定义一个整形变量indexint index=0;在列表控件双击消息处理函数OnDblclkList2()中将列表选择项的索引赋值给indexvoid CMyDlg::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult){ ... //省略部分代码 POSITION pos=m_list.GetFirs...
2019-12-20 23:27:32 145
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 多线程通信 线程分配 根据文件播放进度设置进度条位置
播放mp3 也启动进度条设置线程根据文件播放进度设置进度条位置DWORD WINAPI setprocess(LPVOID lpParameter){ CString str,str1; //定义字符串变量 char ch[100]; //定义字符数组 MCI_STATUS_PARMS stat={0}; //定义并初始化结构体变量 stat.dwItem=MCI_STATUS_LE...
2019-12-13 18:10:48 170
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 多线程通信 线程分配 进度条设置进程
函数OnPlay()调用函数CreateThread()创建进度条设置线程并启动void CMyDlg::OnPlay(){ ... //省略部分代码 HANDLE h; h=::CreateThread(NULL,0,setprocess,this->m_hWnd,0,NULL); //创建进度条设置线程 ... //省略部分代码}setprocess 要设置成全局函数...
2019-12-05 23:11:10 165
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 多线程通信 线程分配 播放mp3
多线程可以使程序同时处理多个文件或实现多个功能还可以防止程序出现资源共享问题mciSendCommand()打开音频设备播放mp3void CMyDlg::OnPlay() //播放按钮消息响应函数{ MCI_OPEN_PARMS open={0}; //大约初始化结构体 cjar str1[100]; //定义字符数组 open.lpstrElementName="F:\\大约在...
2019-12-02 08:44:59 197
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 添加消息映射 使用消息映射宏 消息映射宏
DECLARE_MESSAGE_MAP BEGIN_MESSAGE_MAP以及 END_MESSAGE_MAP 部分定义代码如下#define DECLARE_MESSAGE_MAP() //定义消息宏DECLARE_MESSAGE_MAPprivate: static const AFX_MSGMAP_ENTRY _messageEntries[]; protected: stat...
2019-11-28 19:27:43 171
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 添加消息映射 mfc消息映射表
作用将用户对控件的一些操作消息与消息的响应函数关联消息映射宏中消息响应函数必须首先在窗口类进行声明用户消息响应函数ONnot()声明class CMy121Dlg : public CDialog{ protected: virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg void ONnot(); //消息响...
2019-11-22 06:38:01 150
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 状态栏 显示当前时间
用户编写过程中需要在状态栏上显示信息直接用状态栏句柄statu用户在状态栏内显示系统当前时间void CMyDlg::OnTimer(UINT nIDEvent){ CTime time; //定义时间类对象 time.GetCurrentTime(); //获取系统当前时间 CString str=time.Format("当前时间: % H: % M: %S"); //格式化字...
2019-11-20 20:56:40 227
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 状态栏 显示相关消息
wID指定状态栏窗口ID#define IDC_123 3251用户在窗口中创建一个状态栏用于显示相关消息头文件中定义状态栏句柄代码如下class CMyDlg : public CDialog //主窗口类定义{ public: CMyDlg(CWnd* pParent = NULL); HWND statu; //定义状态栏句柄 ... //省略部分代码}窗口初始化...
2019-11-18 22:48:59 156
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 状态栏
用户在程序中创建状态栏应该首先定义状态栏句柄对象statuOnInitDialog()中使用api函数创建状态栏并返回其句柄HWND CreateStatusWindow( LONG style; LPCTSTR lpszText, HWND hwndParent, UINT wID);函数作用创建状态栏对象并返回其句柄style表示状态栏创建时所指定的窗口样式lpszTe...
2019-11-14 15:36:22 150
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 进度条 状态栏 进度条 SetStep() 和 StepIt()
设置进度条位置的步进变化SetStep() StepIt()原型int SetStep(int nStep);int StepIt();使进度条每次前进5个单位... //省略部分代码m_process.SetRange32(0,100); //设置进度条作用范围0~100int i=m_process.GetPos(); //获取当前位置索引m_process.SetPos(i...
2019-11-10 07:06:43 682
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 进度条 状态栏 进度条 GetPos() SetPos()
原型如下int GetPos(); //获取进度条当前位置int SetPos(int nPos); //设置进度条当前位置使进度条的当前位置前进10个单位索引代码如下... //省略部分代码m_process.SetRange32(0,100); //设置进度条作用范围0~100int i=m_process.GetPos(); //获得当前位置索引m_process.SetP...
2019-11-06 22:00:52 411
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 进度条 状态栏 进度条 SetRange32()
控件类是CProgressCtrl函数是 SetRange32()原型如下void SetRange32(int nLower,int nUpper);参数最小值 最大值进度条作用范围设置0~100m_process.SetRange32(0,100);
2019-11-04 08:17:17 656
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 tab控件初始化 列表控件初始化
关联CListctrl对象名称设置为m_list初始化函数OnInitDialog()中调用CListctrl类函数进行初始化BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); ... //省略部分代码 LVCOLUMN lv; //定义LVCOLUMN结构变量 lv.mask=LVCF_TEXT|LVCF_FMT|LVCF...
2019-11-02 11:59:52 161
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 tab控件初始化 属性页添加控件
控件id 控件类型 控件作用IDC_LIST2 列表控件 显示歌曲列表IDC_SOUSUOMULU 按钮控件 搜索本目录下歌曲IDC_SOUSUOMULU2 按钮控件 搜索本地所有歌曲属性页为播放列表时只有列表控件显示如果属性页发生改变会发送TCN_SELCHANGE消息根据响应消息调整控件显示状态void CMyDlg::OnSelchangeTab1(NMHDR* pNMHD...
2019-10-31 20:45:56 129
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 tab控件初始化 添加两个属性页
添加两个属性页BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); ... //省略部分代码 m_tab.insertItem(TCIF_TEXT,0,"播放列表",NULL,NULL); //添加播放列表属性页 m_tab.insertItem(TCIF_TEXT,1,"搜索歌曲",NULL,NULL); //添加搜索歌曲属性...
2019-10-29 20:01:24 128
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 tab控件初始化 InsertItem()原型
如果启动后没有响应歌曲则tab控件提示用户 播放器没有歌曲要添加歌曲否则播放歌曲添加成员变量对话框修改变量名称为m_tab使用CTabCtrl类对象m_tab在TAB控件中添加属性页InsertItem()原型BOOL InsertItem(UINT nMask,int nItem,LPCTSTR lpszItem,int nImage,LPARAM lParam);nMask...
2019-10-26 23:09:15 174
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 图片控件初始化 初始化
窗口初始化函数进行初始化class CMyDlg: public CDialog{ public: CMyDlg(CWnd* pParent = NULL); HBITMAP bit; //位图句柄 HDC dc1; //兼容DC ...//省略部分代码}BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); Se...
2019-10-22 14:03:26 147
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 图片控件初始化
如果用户要一直显示图片用户将代码加到 CMyDlg::OnPaint()窗口重新绘制,会重新绘制图片void CMyDlg::OnPaint(){ if(IsIconic()) { CPaintDC dc(this); //定义设备上下文对象 SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); ... //省略...
2019-10-19 23:05:03 130
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 图片控件初始化 显示位图
显示一张位图 位图资源ID IDB_BITMAP1... //省略部分代码bit=::LoadBitmap(AfxGetApp()->m_HInstance,MAKEINTRESOURCE(IDC_BITMAP1));//读取位图资源并返回句柄dc1=::CreateCompatibleDC(::GetDC(::GetDlgItem(this->m_hWnd,IDC_TUPIA...
2019-10-17 23:02:56 143
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 图片控件初始化 函数StretchBlt原型
美化界面 让图片显示函数StretchBlt()原型BOOL StretchBlt( HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, i...
2019-10-15 20:44:59 145
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面初始化 控件初始化 禁用播放按钮
在OnInitDialog()实现GetDlgItem()获取控件指针调用函数EnableWindow()禁用控件BOOL CMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); SetIcon(m_hIcon,TRUE); SetIcon(m_hIcon,FALSE); GetDlgItem(IDC_PLAY)->EnableWin...
2019-10-13 16:30:20 130
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 界面设计 控件
设计在于 控件位置大小1 文件新建2 确定,修改程序类型 基于对话框3 下一步 取消关于对话框复选框相关控件控件ID 控件属性 控件作用IDC_TUPIAN 图片 定时显示图片IDC_PLAY 按钮 播放音乐IDC_ZANTING 按钮 控件作用IDC_STOP 按钮 暂停播放音乐IDC_PR...
2019-10-11 09:16:12 128
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 调用函数播放mp3音乐 结构体打开文件
用户可以使用结构体打开mp3文件并播放... //省略部分代码MCI_OPEN_PARMS open; //定义结构体变量open.lpstrElementName="C:\\oo.mp3"; //指定MP3文件路径open.lpstrDeviceType="mpegaudio"; //指定播放设备类型UINT err; //定义错误变量err=mciSendCommand(NULL,...
2019-10-08 18:02:17 308
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 调用函数播放mp3音乐 打开或关闭光驱
MCI_OPEN_PARMS和MCI_PLAY_PARMS是用户经常使用到的命令参数结构体typedef struct{ //结构体MCI_OPNE_PARMS定义 DWORD dwCallback; //回调函数地址 MCIDEVICEID wDeviceID; //设备ID LPCSTR lpstrDeviceType; //设备类型 LPCSTR lpstrElementNam...
2019-10-06 22:57:51 341 1
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 调用函数播放mp3音乐 mciSendCommand
数据结构有mp3附加信息播放函数 mciSendCommand() 和mciSendString()实现mciSendCommand()原型MCIERROR mciSendCommand{ MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam};命令消息到指定设备执行可播放其他格式的音视频数据或操作...
2019-10-04 11:49:23 271
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 显示信息
创建mp3关联文件对象file以二进制方式打开文件如果用户需要其他mp3文件信息将结构体mp3struct中各个成员变量值显示出来即可显示mp3文件所有相关信息... //省略部分代码CString str=" "; //定义并初始化字符串str+=mp3.title; //显示音乐标题str+="\r\n"; //添加换行符str+=mp3.arti; //显示音乐演唱者st...
2019-10-02 22:45:46 160
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 读取文件
列出 一些mp3文件信息结构成员根据结构体编程读取文件相关信息mfc文件类CFile读取文件将文件指针移动到文件最后向前读取128字节即可获取到mp3文件相关信息... //省略部分代码mp3struct mp3={0}; //定义并初始化字符数组CFile file("C:\\卡门.mp3",CFile::modeReadWrite|CFile::typeBinary);//创建...
2019-09-30 08:42:31 248
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 自定义结构体mp3信息
用户需要使用函数读取mp3文件获取文件信息mp3有固定数据结构读取mp3时可当做一般文件进行读取mp3数据结构由两部分组成数据帧和标签帧数据帧是实体数据标签帧中以字符tag标记在mp3文件最后128字节包含该音乐演唱者 音乐名称 及时间等信息自定义结构体mp3信息typedef struct mp3_struct //自定义mp3结构体{ char heade[3]; ...
2019-09-28 18:14:29 166
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 mp3介绍
mp3是一种音频压缩格式数据容量较小一般情况 是按照1:12倍率进行压缩因此,mp3是有损压缩将大容量音频数据丢弃部分数据重新进行组合这种情况下音乐数据的少量丢失并不影响mp3音乐播放质量...
2019-09-25 21:39:36 115
原创 Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础
音频视频信息都是以不同数据格式进行存储用户对固定数据格式音频视频文件进行解码时要播放器用户播放mp3时,播放器将数字信号转换成音频信号送入音频设备中进行播放播放器起解码作用...
2019-09-23 06:25:11 124
原创 Visual C++网络编程经典案例详解 第8章 网络文件传输 客户端代码 代码分析 发送文件
客户端向服务器发送文件靠按钮实现程序弹出 打开 对话框供用户选择要发送的文件及路径然后,根据路径,创建文件对象 打开文件进行读取直到读取成功最后 将缓冲区中的数据发送到服务器代码如下void CMyDlg::OnLiulan() //发送文件按钮消息响应函数{ char text[100]; //定义字符数组 CFileDialog file(true); //定义文件对话框对...
2019-09-20 07:18:47 168
原创 Visual C++网络编程经典案例详解 第8章 网络文件传输 客户端代码 代码分析 接收文件
接收文件按钮添加消息响应函数OnSave()使用文件对话框CFileDialog类显示文件保存对话框实现文件接收功能代码如下void CMyDlg::OnSave() //接收文件按钮的消息响应函数{ if(s!=NULL) { ::recv(s,&text,100); //接收文件名 if(text!=0) { CFileDialog filedlg(fa...
2019-09-18 10:27:40 155
原创 Visual C++网络编程经典案例详解 第8章 网络文件传输 客户端代码 代码分析 接收文件 设置按钮可用
客户端检测服务器发送文件时将接收文件设置为可用单击按钮选择接收文件保存路径代码如下void CMyDlg::Oncsockt1(WPARAM wParam,LPARAM lParam){ switch(lParam) { case FD_READ: //设置读取事件 ... //省略部分代码 GetDlgItem(IDC_SAVE)->EnableWindow(tr...
2019-09-14 15:48:58 103
深入理解C# 第三版 第二章代码
2018-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人