计算机论文小型媒体播放器和运行程序.docx

上传人:b****5 文档编号:6481359 上传时间:2023-01-06 格式:DOCX 页数:29 大小:30.34KB
下载 相关 举报
计算机论文小型媒体播放器和运行程序.docx_第1页
第1页 / 共29页
计算机论文小型媒体播放器和运行程序.docx_第2页
第2页 / 共29页
计算机论文小型媒体播放器和运行程序.docx_第3页
第3页 / 共29页
计算机论文小型媒体播放器和运行程序.docx_第4页
第4页 / 共29页
计算机论文小型媒体播放器和运行程序.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

计算机论文小型媒体播放器和运行程序.docx

《计算机论文小型媒体播放器和运行程序.docx》由会员分享,可在线阅读,更多相关《计算机论文小型媒体播放器和运行程序.docx(29页珍藏版)》请在冰豆网上搜索。

计算机论文小型媒体播放器和运行程序.docx

计算机论文小型媒体播放器和运行程序

小型媒体播放器

一、问题定义:

1、项目:

小型媒体播放器

2、背景:

目前多数计算机的媒体播放程序过于庞大,初学计算机的人员不易接受,尤其对于没有光盘支持的计算机无法安装。

该播放程序所占磁盘空间只有90K,不足一张软盘的16分之一,运行时所占系统资源极少,可以利用软盘存放和使用,可以在Windows95及以上所有操作系统中运行,不需其它程序支持,方便携带和使用。

3、项目目标:

建立一个界面直观,操作简单,携带方便的小型Windows媒体播放器。

4、项目要求:

硬件:

最低配置:

PentiumII266/VGA/32M内存。

       软件:

Windows95//98/Me/Nt/2000。

5、可行性研究:

1天时间。

二:

可行性研究:

1、要求

⑴了解情况:

了解目前大多数计算机的操作系统和媒体播放程序的类型,同时了解仍在使用的老型号计算机中的媒体播放程序。

⑵使用范围:

该程序主要适用于初学计算机的用户,可用作培训用的低配置计算机,高档计算机同样可以使用此程序。

2、目标:

设计一个界面直观,操作方便,容易携带的小型Windows媒体播放器。

3、开发环境:

PIII计算机,Windows98操作系统,VisualC++5.0。

4、技术可行性分析:

利用VisualC++5.0开发环境完全可以实现上述要求。

三、项目开发计划:

1、工作内容:

本项目的工作主要分为三个阶段。

第一阶段:

可行性研究;需求分析;概要设计;开发计划;测试计划。

第二阶段:

编码。

第三阶段:

测试。

2、实施计划:

可行性研究、需求分析:

1天

       概要设计:

1天

       编码:

5天

       测试修改:

3天

       文档:

2天

四、需求规格说明:

1、对于程序的具体要求:

⑴能够运行在Windows95及以上任何操作系统中。

⑵界面直观,操作简便。

⑶可以播放wav、mid、mp3、avi、flc、dat、mpg等多种常见的媒体文件。

⑷可实现快进、后退等基本功能,可实现全屏播放、循环播放等辅助功能,可调节音量,可更改播放界面等。

⑸新增了系统信息项,可查看计算机系统及资源的简要信息。

2、数据描述及数据结构:

⑴注册Windows窗口类结构1,初始化程序主面板

wcl.hInstance=hThisInst;

wcl.lpszClassName=szClassName1;

wcl.lpfnWndProc=WindowFunc;

wcl.style=CS_DBLCLKS;

wcl.cbSize=sizeof(WNDCLASSEX);

wcl.hIconSm=LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wcl.hIcon=LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wcl.hCursor=LoadCursor(hThisInst,MAKEINTRESOURCE(MYTU));

wcl.lpszMenuName=(char*)MYMENU1;

wcl.cbClsExtra=0;

wcl.cbWndExtra=0;

wcl.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);

⑵注册Windows窗口类结构2,初始化播放器窗口

wc2.hInstance=hThisInst;

wc2.lpszClassName=szClassName2;

wc2.lpfnWndProc=WindowFunc2;

wc2.style=CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW;

wc2.cbSize=sizeof(WNDCLASSEX);

wc2.hIcon=LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wc2.hIconSm=NULL;//LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wc2.hCursor=LoadCursor(hThisInst,MAKEINTRESOURCE(MYTU));

wc2.lpszMenuName=NULL;

wc2.cbClsExtra=0;

wc2.cbWndExtra=0;

wc2.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

3、数据字典:

全局变量:

LONGlength,step=5,style;

BOOLplaying=FALSE,open=FALSE,circulate=FALSE,fullscreen=FALSE;

五、功能及划分:

1、功能划分:

⑴文件管理;⑵播放控制;⑶界面设置;⑷帮助功能。

2、功能描述

⑴文件管理:

此项功能包括文件的打开与关闭、弹出或关闭光盘驱动器及退出系统。

⑵播放控制:

此项功能包括文件的播放和暂停、快进和后退、跳到文件开头和结尾、全屏播放、循环播放和音量控制几项功能。

⑶界面设置:

可将播放界面在有无工具条和有无轨迹条间切换。

⑷帮助功能:

包含了该程序的来源、所能播放的媒体类型、制作时间及制作人的信息,以及计算机系统及资源的简要信息。

六、运行要求:

1、用户界面:

本程序界面直观(见上图),常用功能以工具按钮形式排列在主面板上,其它功能以菜单形式打开;为方便用户使用,为每项功能设置了快捷键,极大地方便了用户,并且用户可以更改界面设置。

2、运行设计:

程序运行后,用户所有的操作都可以利用鼠标实现。

七、总体设计

系统主要功能模块

文件管理播放控制界面设置帮助功能

打开一个媒体文件暂停隐藏工具条关于

关闭一个媒体文件快进显示工具条信息

弹出所有光驱后退隐藏轨迹条

关上所有光驱跳到文件头显示轨迹条

退出跳到文件尾

全屏/窗口

播放循环播放

音量控制

八、程序测试

测试主要是为了发现系统开发中出现的不完善或是错误之处,并加以改正。

采用自顶向下的方法进行测试。

在系统测试时采用人工测试法。

经测试、修改后的系统可以完成所需的功能,但由于测试数据不够全面,某些媒体有被忽略的可能。

九、使用说明

1、安装:

该程序编译后不依赖其它程序,无需安装,可直接在软盘或光盘中运行,也可以将MiniMediaPlayer.exe文件复制到其它计算机中运行。

2、运行:

启动Windows系统,执行MiniMediaPlayer.exe文件。

十、主要程序代码:

#include

#include

#include

#include"resource.h"

#include

#include

#include

#include

#defineUPDATEWM_USER+1

#defineNB11

TBBUTTONtbbutton[NB];

HWNDhwnd,hwndMovie,htrackwnd,htbwnd;

HMENUmainmenu,submenu,submenu2;

HICONhicon[4];

LRESULTCALLBACKWindowFunc(HWND,UINT,WPARAM,LPARAM);

LRESULTCALLBACKWindowFunc2(HWND,UINT,WPARAM,LPARAM);

charszClassName1[]="classname1";

charszClassName2[]="classname2";

charstr[500]="";

HINSTANCEhThisInstance;

MCI_DGV_OPEN_PARMSmciOpen;

MCI_DGV_RECT_PARMSmciRect;

MCI_DGV_WINDOW_PARMSmciWindow;

MCI_DGV_PUT_PARMSmci_Put;

MCI_STATUS_PARMSmciStatus;

MCI_SEEK_PARMSmciSeek;

MCI_DGV_UPDATE_PARMSmciUpdate;

LONGlength,step=5,style;

BOOLplaying=FALSE,open=FALSE,circulate=FALSE,fullscreen=FALSE;

intWindowWidth,WindowHeight,WindowTopX,WindowTopY;

charfn[256];

charfilename[256];

MEMORYSTATUSfreemem;

DWORDvolume=1000;

WORDwDeviceID;

voidGetAudioCDDevID();

voidCDEject();

BOOLCloseCDDevice();

voidCDBack();

voidInitToolBar(void);

DWORDPlayMovie(WORDwDevID,DWORDdwFrom,DWORDdwTo);

BOOLinitavi(DWORD);

voidSetFilename(char*);

BOOLSetStep(DWORD);

intWINAPIWinMain(HINSTANCEhThisInst,HINSTANCEhPrevInst,

LPSTRlpszArgs,intnWinMode)

{

MSGmsg;

WNDCLASSEXwcl,wc2;

HACCELhAccel;

hThisInstance=hThisInst;

//Defineawindowclass

wcl.hInstance=hThisInst;

wcl.lpszClassName=szClassName1;

wcl.lpfnWndProc=WindowFunc;

wcl.style=CS_DBLCLKS;

wcl.cbSize=sizeof(WNDCLASSEX);

wcl.hIconSm=LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wcl.hIcon=LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wcl.hCursor=LoadCursor(hThisInst,MAKEINTRESOURCE(MYTU));

wcl.lpszMenuName=(char*)MYMENU1;

wcl.cbClsExtra=0;

wcl.cbWndExtra=0;

wcl.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);

if(!

RegisterClassEx(&wcl))

{

MessageBox(NULL,"NOREGISTERWC1!

","警告",MB_OK);

return0;

}

wc2.hInstance=hThisInst;

wc2.lpszClassName=szClassName2;

wc2.lpfnWndProc=WindowFunc2;

wc2.style=CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW;

wc2.cbSize=sizeof(WNDCLASSEX);

wc2.hIcon=LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wc2.hIconSm=NULL;//LoadIcon(hThisInst,MAKEINTRESOURCE(PLAY));

wc2.hCursor=LoadCursor(hThisInst,MAKEINTRESOURCE(MYTU));

wc2.lpszMenuName=NULL;

wc2.cbClsExtra=0;

wc2.cbWndExtra=0;

wc2.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

 

if(!

RegisterClassEx(&wc2))

{

MessageBox(NULL,"NOREGISTERWC2!

","警告",MB_OK);

return0;

}

 

hwnd=CreateWindow(

szClassName1,

"MiniMediaPlayer",

WS_CAPTION|WS_MINIMIZEBOX|WS_SYSMENU,//WS_OVERLAPPEDWINDOW,

150,300,373,124,

NULL,

NULL,

hThisInst,

NULL

);

if(hwnd==NULL)

{

MessageBox(NULL,"窗口句柄为空!

(hwndisNull!

)","警告",MB_OK);

return0;

}

DragAcceptFiles(hwnd,1);

//MessageBox(NULL,"此程序仅用C语言和WindowsAPI编制而成。

","关于:

",MB_OK|MB_ICONINFORMATION);

hAccel=LoadAccelerators(hThisInst,(char*)ACCELERATOR1);

ShowWindow(hwnd,SW_SHOW);

UpdateWindow(hwnd);

mainmenu=GetMenu(hwnd);

submenu=GetSubMenu(mainmenu,0);

submenu2=GetSubMenu(mainmenu,1);

InitToolBar();

InitCommonControls();

htbwnd=CreateToolbarEx(

hwnd,

WS_VISIBLE|WS_CHILD|

TBSTYLE_TOOLTIPS|TBSTYLE_WRAPABLE,

MYTOOLBAR,

NB,

hThisInstance,

MYTOOLBAR,

tbbutton,

NB,

0,0,

32,32,

sizeof(TBBUTTON));

SendMessage(htbwnd,TB_ENABLEBUTTON,FILE_CLOSE,0);

SendMessage(htbwnd,TB_ENABLEBUTTON,CTRL_PLAY,0);

hicon[0]=LoadIcon(hThisInst,MAKEINTRESOURCE(IDI_ICON0));

hicon[1]=LoadIcon(hThisInst,MAKEINTRESOURCE(IDI_ICON1));

hicon[2]=LoadIcon(hThisInst,MAKEINTRESOURCE(IDI_ICON2));

hicon[3]=LoadIcon(hThisInst,MAKEINTRESOURCE(IDI_ICON3));

if(strlen(lpszArgs))

{

strcpy(filename,lpszArgs);

SetFilename(lpszArgs);

if(!

initavi(WS_OVERLAPPEDWINDOW))

{

SendMessage(hwnd,WM_COMMAND,FILE_CLOSE,0);

}

else

{

SendMessage(hwnd,WM_COMMAND,CTRL_PLAY,0);

EnableMenuItem(submenu,FILE_OPEN,MF_BYCOMMAND|MF_GRAYED);

EnableMenuItem(submenu,FILE_CLOSE,MF_BYCOMMAND|MF_ENABLED);

//EnableMenuItem(submenu2,CTRL_PLAY,MF_BYCOMMAND|MF_ENABLED);

SendMessage(htbwnd,TB_CHECKBUTTON,FILE_OPEN,1);

SendMessage(htbwnd,TB_ENABLEBUTTON,FILE_CLOSE,1);

SendMessage(htbwnd,TB_ENABLEBUTTON,CTRL_PLAY,1);

}

}

while(GetMessage(&msg,NULL,0,0))

{

if(!

TranslateAccelerator(hwnd,hAccel,&msg))

TranslateMessage(&msg);

DispatchMessage(&msg);

}

returnmsg.wParam;

}

 

LRESULTCALLBACKWindowFunc(HWNDhwndfunc,UINTmessage,

WPARAMwParam,LPARAMlParam)

{

HDChdc;

HANDLEhDrop;

PAINTSTRUCTpaintstruct;

OPENFILENAMEopenfile;

staticBOOLplaying=0;

charfilefiler[]={'*','.','w','a','v','\0','*','.','W','A','V','\0',

'*','.','m','i','d','\0','*','.','M','I','D','\0',

'*','.','r','m','i','\0','*','.','R','M','I','\0',

'*','.','a','v','i','\0','*','.','A','V','I','\0',

'*','.','d','a','t','\0','*','.','D','A','T','\0',

'*','.','*','\0','*','.','*','\0','\0'};

floathdj,vdj;

LONGposition;

LPTOOLTIPTEXTttext;

staticinti=0;

STARTUPINFOstartupinfo;

PROCESS_INFORMATIONprocessinfo;

charcomline[]="sndvol32.exe",dir[50];

switch(message)

{

caseWM_KEYDOWN:

SendMessage(hwndMovie,WM_KEYDOWN,wParam,lParam);

break;

caseWM_NOTIFY:

ttext=(LPTOOLTIPTEXT)lParam;

if(ttext->hdr.code==TTN_NEEDTEXT)

switch(ttext->hdr.idFrom)

{

caseFILE_OPEN:

ttext->lpszText="打开一个媒体文件";

break;

caseFILE_CLOSE:

ttext->lpszText="关闭一个媒体文件";

break;

caseCTRL_PLAY:

ttext->lpszText="播放";

break;

caseCTRL_PAUSE:

ttext->lpszText="暂停";

break;

caseCTRL_FORWARD:

ttext->lpszText="快进";

break;

caseCTRL_BACK:

ttext->lpszText="后退";

break;

caseCTRL_START:

ttext->lpszText="跳到文件开始";

break;

caseCTRL_END:

ttext->lpszText="跳到文件结尾";

break;

caseCTRL_VOLUME:

ttext->lpszText="音量控制";

break;

}

break;

caseWM_COMMAND:

switch(LOWORD(wParam))

{

caseSET_HIDE:

ShowWindow(htbwnd,SW_HIDE);

break;

caseSET_SHOW:

ShowWindow(htbwnd,SW_SHOW);

break;

caseSET_HIDETRACK:

ShowWindow(htrackwnd,SW_HIDE);

break;

caseSET_SHOWTRACK:

ShowWindow(htrackwnd,SW_SHOW);

break;

caseCTRL_FULLSCREEN:

SendMessage(hwndMovie,WM_KEYDOWN,13,0);

break;

caseCTRL_VOLUME:

memset(&startupinfo,0,sizeof(STARTUPINFO));

startupinfo.cb=sizeof(STARTUPINFO);

GetWindowsDirectory(dir,50);

if(CreateProcess(NULL,

comline,

NULL,

NULL,

0,

0,

NULL,

dir,

&startupinfo,

&processinfo

)==0)

MessageBox(N

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1