自己动手开发音乐播放器(四)文件操作

上传人:平*** 文档编号:16734647 上传时间:2017-11-08 格式:DOC 页数:11 大小:41.24KB
返回 下载 相关 举报
自己动手开发音乐播放器(四)文件操作_第1页
第1页 / 共11页
自己动手开发音乐播放器(四)文件操作_第2页
第2页 / 共11页
自己动手开发音乐播放器(四)文件操作_第3页
第3页 / 共11页
自己动手开发音乐播放器(四)文件操作_第4页
第4页 / 共11页
自己动手开发音乐播放器(四)文件操作_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《自己动手开发音乐播放器(四)文件操作》由会员分享,可在线阅读,更多相关《自己动手开发音乐播放器(四)文件操作(11页珍藏版)》请在金锄头文库上搜索。

1、转载请注明出处:http:/ 青岛网站建设自己动手开发音乐播放器(四) 文件操作 所有的准备工作做完了后,就可以实现播放音乐的功能了吗,NO ,在实现播放音乐之前还需要处理音乐文件,就是对音乐文件的增删改查首先我们需要知道 OPENFILENAME 结构和 GetFileName 函数OPENFILENAME 结构是一个文件处理结构参数:DWORD lStructSize;HWND hwndOwner;HINSTANCE hInstance;LPCTSTR lpstrFilter;LPTSTR lpstrCustomFilter;DWORD nMaxCustFilter;DWORD nFilt

2、erIndex;LPTSTR lpstrFile;DWORD nMaxFile;LPTSTR lpstrFileTitle;DWORD nMaxFileTitle;LPCTSTR lpstrInitialDir;LPCTSTR lpstrTitle;DWORD Flags;WORD nFileOffset;WORD nFileExtension;转载请注明出处:http:/ 青岛网站建设LPCTSTR lpstrDefExt;LPARAM lCustData;LPOFNHOOKPROC lpfnHook;LPCTSTR lpTemplateName;由于 OPENFILENAME 结构的参数过

3、多,我就不一一介绍,在后面程序中使用时,我再介绍还需要一个函数 GetOpenFileName 用于打开文件夹,GetOpenFileName 只用一个参数,OPENFILENAME 的地址在使用时还需要定义一些全局变量为了减少变量的使用/*处理音乐文件时所需的全局变量*/static OPENFILENAME ofn;/打开文件对话框的文件结构static char szOpenFileName80*MAX_PATH;/保存文件名static char szFileName80*MAX_PATH;/保存歌曲的全路径static char szPath80*MAX_PATH;/储存路径stat

4、ic char OpenMusicFileMAX_PATH;/保存路径( 用于操作音乐)为了处理音乐文件还需要定义几个函数void FileInit(HWND hwnd)/*函数名: FileInit(HWND hwnd)转载请注明出处:http:/ 青岛网站建设函数功能: 打开文件初始化文件对话框*/void FileInit(HWND hwnd)/文件结构清零ZeroMemory(&ofn,sizeof(ofn);/文件结构的大小ofn.lStructSize = sizeof(ofn);/文件路径ofn.lpstrFile = szOpenFileName;ofn.lpstrFile0

5、= TEXT(0);ofn.nMaxFile = sizeof(szOpenFileName);/过滤器ofn.lpstrFilter = TEXT(所有支持文件(*.wav,*.mp3,*.wma)0*.wav;*.mp3;*.wma0wave 文件(*.wav)0*.wav0mp3 文件(*.mp3)0*.mp30wma 文件(*.wma)0*.wma0);ofn.nFilterIndex = 1;ofn.lpstrFileTitle = NULL;ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.hwndOwner = hwnd;o

6、fn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT;int OpenFileDlg(void)/*函数名: bool OpenFileDlg(void)转载请注明出处:http:/ 青岛网站建设函数功能: 打开文件对话框*/int OpenFileDlg(void)return GetOpenFileName(&ofn);void AddFile(HWND hwnd)/*函数名: void AddFile(HWND hwnd)函数功能: 添加文件*/void AddFile(HWND hwnd)TCHAR *p;/

7、用于遍历音乐文件int len = 0;FileInit(hwnd);/文件初始化if(OpenFileDlg()/*把第一个文件名复制到 szPath如果只选了一个文件,就复制到最后一个如果选了多个文件,就复制到第一个 NULL 字符 */lstrcpyn(szPath, szOpenFileName, ofn.nFileOffset);/*当只选了一个文件时 ,下面的 NULL 是必须的这是不区别待选了一个和多个文件情况*/szPathofn.nFileOffset = 0;len = lstrlen(szPath);if(szPathlen - 1 != )lstrcat(szPath,

8、TEXT();转载请注明出处:http:/ 青岛网站建设p = szOpenFileName + ofn.nFileOffset;ZeroMemory(szFileName, sizeof(szFileName);HWND hwndList = GetDlgItem(hwnd, IDC_LIST1);while(*p)lstrcat(szFileName, szPath);/*给文件名加上路径*/lstrcat(szFileName, p);/*加上文件名*/ListBox_InsertString(hwndList, -1, p);lstrcat(szFileName, TEXT(n);/*

9、换行*/p += lstrlen(p) + 1;/*移到下一个文件*/void AddFolder(HWND hwnd)/*函数名: AddFolder(HWND hwnd)函数功能: 添加文件夹*/void AddFolder(HWND hwnd)/保存文件夹的路径TCHAR szFileMAX_PATH;TCHAR pBuffer_DirectoryMAX_PATH;/存放文件信息BROWSEINFO sBrowseInfo;/文件夹结构转载请注明出处:http:/ 青岛网站建设LPCITEMIDLIST lpitem;/用于判断是否选择了一个文件夹WIN32_FIND_DATA sfd;

10、/文件的全部属性结构/对文件夹结构清零ZeroMemory(&sBrowseInfo,sizeof(BROWSEINFO);/浏览文件夹对话框的父窗体句柄。sBrowseInfo.hwndOwner=hwnd;/该浏览文件夹对话框对话框的显示文本,用来提示该浏览文件夹对话框的功能、作用和目的。sBrowseInfo.lpszTitle=请选择文件夹;/文件夹对话框的选项sBrowseInfo.ulFlags=BIF_RETURNONLYFSDIRS;/BIF_RETURNFSANCESTORS:返回文件系统的一个节点。仅仅当选中的是有意义的节点时, “OK”按钮才可以使用。/显示一个选择文件夹

11、的对话框lpitem=SHBrowseForFolder(&sBrowseInfo);/判断是否选择了文件夹if(NULL=lpitem)return;/获得文件夹的路径SHGetPathFromIDList(lpitem,pBuffer_Directory);strcpy(szFile,pBuffer_Directory);/枚举过滤条件(只实现 MP3)lstrcat(pBuffer_Directory,*.mp3);/*得到第一个文件(第一首歌)的句柄*/HANDLE hfindfile = FindFirstFile(pBuffer_Directory,&sfd);if(INVALID

12、_HANDLE_VALUE=hfindfile)/判断文件是否有效return;转载请注明出处:http:/ 青岛网站建设doif (sfd.cFileName0=.)continue;lstrcat(szFileName,szFile);lstrcat(szFileName,TEXT();lstrcat(szFileName,sfd.cFileName);lstrcat(szFileName,TEXT(n);/得到 ListBox 控件的句柄HWND hwndList = GetDlgItem(hwnd,IDC_LIST1);/将音乐文件的文件名(歌曲名) 添加到播放列表中ListBox_I

13、nsertString(hwndList,-1,sfd.cFileName);while (FindNextFile(hfindfile,&sfd);/*只要没遍历到文件夹中的最后一个文件就一直添加*/在 void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)中添加下面的代码/*添加歌曲到列表中*/case ID_MENUADD:AddFile(hwnd);break;/*添加歌曲到播放列表中 */case IDC_ADD:AddFile(hwnd);转载请注明出处:http:/ 青岛网站建设break;运行效果删除列表中的歌曲,删除列表中的歌曲主要使用 ListBox_DeleteString 函数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号