Linux下基于MiniGUI的媒体播放器的设计与实现.doc
《Linux下基于MiniGUI的媒体播放器的设计与实现.doc》由会员分享,可在线阅读,更多相关《Linux下基于MiniGUI的媒体播放器的设计与实现.doc(21页珍藏版)》请在沃文网上搜索。
1、单片机与嵌入式系统课程设计 1课程设计的目的1、熟练掌握嵌入式系统的应用2、加强嵌入式的综合运用能力,提高嵌入式的软件编程和调试能力,为以后的学习和开发工作打好良好基础。3、掌握小系统开发设计的流程以及设计思路2.设计方案论证2.1播放器总体结构本文中的播放器采用MiniGUI作为底层图形库,用于生成用户界面以及读写FrameBuffer。基于MiniGUI的嵌入式系统总体架构如图1所示。图1 基于MiniGUI的嵌入式系统总体架构播放器软件总体结构如图2所示,它主要由三部分组成,分别是图形用户界面模块、系统管理主控模块和音/视频解码器。三部分功能设计如下面所述:图形用户界面模块通过事件/消息
2、机制和系统管理主控模块交互。音/视频解码器模块可以看作是系统管理主控模块的插件(plug-in),从系统管理主控模块获得编码的音/视频数据并对其解码后发送己解码的音/视频数据给系统管理主控模块。系统管理主控模块则负责网络数据的接收和解析、图形用户界面模块和音/视频解码器模块的工作协调和音/视频数据的输出。这个模块是播放器软件中非常重要的一个模块。图2 播放器应用程序结构图2.2用户图形界面设计MiniGUI提供了丰富的GUI元素,如常见的控件类、对话框与消息框以及菜单等,此外,MiniGUI支持界面皮肤。因此,利用MiniGUI可以非常方便地设计出漂亮的用户图形界面。播放器的人机交互界面主要包
3、括播放控制与文件列表管理两大部分。播放控制用来实现对所选择的媒体文件作播放/暂停、停止及进度控制等;文件列表管理则用来实现向播放列表添加、删除媒体文件以及对列表中文件排序等功能。3.设计的过程与分析#include time.h#include ; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc
4、lude #include #define IDL_DEL_DIR 818#define IDL_DEL_FILE 819#define IDC_DEL_PATH 820char fpath100;char path100;char mypath100;char files 1024 = 你选择要播放的文件是:n;static DLGTEMPLATE DlgDelFiles = WS_BORDER | WS_CAPTION, WS_EX_NONE, 0, 0,320, 213, 资源管理器, 0, 0, 7, NULL, 0;static CTRLDATA CtrlDelFiles = CTR
5、L_STATIC, WS_VISIBLE | SS_SIMPLE, 10, 10, 130, 15, IDC_STATIC, 目录列表, 0 , CTRL_LISTBOX, WS_VISIBLE | WS_VSCROLL | WS_BORDER | LBS_SORT | LBS_NOTIFY, 10, 30, 130, 80, IDL_DEL_DIR, , 0 , CTRL_STATIC, WS_VISIBLE | SS_SIMPLE, 150, 10, 130, 15, IDC_STATIC, 文件列表, 0 , CTRL_LISTBOX, WS_VISIBLE | WS_VSCROLL |
6、 WS_BORDER | LBS_SORT | LBS_AUTOCHECKBOX, 150, 30, 130, 80, IDL_DEL_FILE, , 0 , CTRL_STATIC, WS_VISIBLE | SS_SIMPLE, 10, 130, 290, 15, IDC_DEL_PATH, 路径:, 0 , button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 10, 150, 130, 25, IDOK, 确定, 0 , button, WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP
7、, 150, 150, 130, 25, IDCANCEL, 取消, 0 ,;static void fill_boxes (HWND hDlg, const char* path)#ifdef _ECOS_ LISTBOXITEMINFO lbii; lbii.string = file.1; lbii.cmFlag = CMFLAG_BLANK; lbii.hIcon = 0; SendDlgItemMessage (hDlg, IDL_DEL_FILE, LB_ADDSTRING, 0, (LPARAM)&lbii); lbii.string = file.2; SendDlgItemM
8、essage (hDlg, IDL_DEL_FILE, LB_ADDSTRING, 0, (LPARAM)&lbii); lbii.string = file.3; SendDlgItemMessage (hDlg, IDL_DEL_FILE, LB_ADDSTRING, 0, (LPARAM)&lbii);#else struct dirent* dir_ent; DIR* dir; struct stat ftype; char fullpath PATH_MAX + 1; SendDlgItemMessage (hDlg, IDL_DEL_DIR, LB_RESETCONTENT, 0,
9、 (LPARAM)0); SendDlgItemMessage (hDlg, IDL_DEL_FILE, LB_RESETCONTENT, 0, (LPARAM)0); SetWindowText (GetDlgItem (hDlg, IDC_DEL_PATH), path); if (dir = opendir (path) = NULL) return; while ( (dir_ent = readdir ( dir ) != NULL ) /* Assemble full path name. */ strncpy (fullpath, path, PATH_MAX); strcat
10、(fullpath, /); strcat (fullpath, dir_ent-d_name); if (stat (fullpath, &ftype) d_name); else if (S_ISREG (ftype.st_mode) LISTBOXITEMINFO lbii;lbii.string = dir_ent-d_name; lbii.cmFlag = CMFLAG_BLANK; lbii.hIcon = 0; SendDlgItemMessage (hDlg, IDL_DEL_FILE, LB_ADDSTRING, 0, (LPARAM)&lbii); closedir (di
11、r);#endif void dir_notif_proc (HWND hwnd, int id, int nc, DWORD add_data) if (nc = LBN_CLICKED | nc = LBN_ENTER) int cur_sel = SendMessage (hwnd, LB_GETCURSEL, 0, 0L); if (cur_sel = 0) char cwd MAX_PATH + 1; char dir MAX_NAME + 1; GetWindowText (GetDlgItem (GetParent (hwnd), IDC_DEL_PATH), cwd, MAX_
12、PATH); SendMessage (hwnd, LB_GETTEXT, cur_sel, (LPARAM)dir);if (strcmp (dir, .) = 0) return; strcat (cwd, /); strcat (cwd, dir); fill_boxes (GetParent (hwnd), cwd); static void file_notif_proc (HWND hwnd, int id, int nc, DWORD add_data) /* Do nothing */static void prompt (HWND hDlg) int i; GetWindow
13、Text(GetDlgItem (hDlg, IDC_DEL_PATH),path,MAX_PATH); strcat(path,/); for (i = 0; i SendDlgItemMessage (hDlg, IDL_DEL_FILE, LB_GETCOUNT, 0, 0L); i+) char file MAX_NAME + 1; int status = SendDlgItemMessage (hDlg, IDL_DEL_FILE, LB_GETCHECKMARK, i, 0); if (status = CMFLAG_CHECKED) SendDlgItemMessage (hD
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 基于 MiniGUI 媒体播放器 设计 实现