当前位置:文档之家› MFC视频播放器(试过,可以成功)

MFC视频播放器(试过,可以成功)

1需求分析NBA现役巨星资料库随着NBA (National Basketball Association)近二十年来在中国市场的扩张,如今中国积攒的相当一部分NBA的忠实球迷,更随着中国如王治郅,姚明,易建联等中国球员加入NBA,更多的中国人开始了解NBA。

从而NBA得各种信息变得炙手可热,如NBA巨星们的视频,个人资料,周边故事,赛事,等等。

这些信息,现如今不仅仅在网络上被各种人使用使用,在日常生活中也是很值得爱好NBA的人去了解的。

本人也是一位NBA的爱好者,在一次资料的搜集中,我想要查询网络上“现役NBA巨星的资料”时,可并没有发现,只有“ 50大”(NBA历史上前五十的巨星)诸多资料。

其现役巨星的资料大多都是分散的记录。

在当下,“50大”只能是NBA的周边或历史,而现役巨星才是现在球迷的追求对象,所以一套完整的现役巨星资料可以称得上是一份绝对的值得珍藏的资料。

但是整理一份资料简单,只需在各种网站中搜索巨星的名字,相关资料自然会弹出,可如何去让它具有一个更高的集成性,如何去让它更符合我们拥有如今操作理念,不在是单一的单窗口字面文档。

设计一个基于数据库且可实现多窗口,在形式上多样化,这就是此次MFC程序设计的主导方向。

MFC程序设计既然程序是基于数据库的,固然数据库是必须建立的,在MFC建立数据库的方式有很多,期中最简单操作的是Access数据库的调用可通过ODBC。

而形成形式上的突破方法是很多的,如联入多媒体,插入视图,增加功能等等。

数据流图图片视频2系统设计概要设计在需求分析中提到所建立的程序可以实现多窗口调用且具有多功能的。

首先, 建立的程序是基于数据库的多文档格式 MFC 程序,整个程序大至可分为三个模 块。

体系结构设计分析我设计的这个程序,其三个模块并不是互相调用的,而是另两个模块以窗 口对接按键的形式,被第一个模块调用的。

这样的结构存在属于“层次结构” , 高层的工作建立在低层的工作上面,把复杂的事情转化成多件逐层递进的事件。

模块设计上面说到,这个程序设计中有三个模块,其中两个以窗口形式存在的模块与另 一模块的耦合(Coupling )较强,可是这两个模块却又是完全独立的,他们属于 强内聚(Cohesion )。

这样的设计算不上“强内聚,弱耦合”。

可在程序中以窗口 运行的两个模块是具有一定的封闭性。

详细设计© NEAffite^星信电:城宰(Atctis 2000丈件棺式I角炳d tedistma dmw I X I -a 蛊 iB2使用ODBC 实现对Access 的驱动(WIN7在主控面板右上角输入“ ODBC”)科比•布莱恩特 砂圭尔•真的 阿伦•艾弗森 薔怖恩-韦懐 勒布朗•普姆斯 億怖特•霍华德 克里斯•保罗 史蒂夫•抽什 凯文•仙内特 待雷西•麦克格€ 姚用小飞侠1.英尺$英=2.1GM 打却?1英 誓案 1.83M 阳贪尺0英十 闷电侠 1.93m / 6尺4寸 小皇帝 2. (J3mf6英尺£英匚 M21册6英尺11金蹩王1.83m1.91m 線王2.1W6 尺 11 寸 T _Mac2. 03冊£英尺£英;沦鋼T 英尺6疑sa.oks/aos 磅 得分后卫/小前^洛杉矶湖人限 HT 阪型融 中饉 漩士顿凯尔特” T4.业討1閃磅得分后卫 费城七六人臥 20&切听埜斤得分后卫/组织后迈阿密热火113 4W250^小前覆 迈阿魏火臥 120kg 中锂奥兰多魔术阴 TO- *kg 扌空球后卫 新臭尔良靑虫郢 89kj113.4ke/2S0^ 101kg/223i^134.2k* 渐磅锋后 前分锂 犬得中菲尼克斯衣阳F 披士屯帥特‘ 底特律活基陆 休斯顿火箭记录:®Er^jrs II 裁 I隼号出牛曰期丨 身為1 EE5*]共有记录数"13.建立一个MFC程序,多文档(MDI )格式打开,且在第三部中,选取读取数据库,在数据库中ODBC的下拉栏中选择自己刚才建立驱动的Access文档,完毕后点击完成。

4.在对话框上添加与Access表中对应栏目的动态文本框,再添加相关静态文本, 将这部分静态文本更改属性与栏目名对应。

s:dj ..............1 L场上谊呂EdiiFR SE血直[Edit5•在类向导(MFC ClassWizard)中添加每个栏目的类(最终的每一步结束后都要点击OK 键,VC 才会保存设置)6. 这样就实现了数据的直观表现,接下来是添加“查询功能” 。

新建一个对话框 Dialog ),加入一个动态文本框且去掉取消按键,这时修改动态文本的 ID ,且 为其添加新类。

MFc7:las&Wizard接着在主面板上添加一个按键,更改属性名称为“巨星查找”,然后建立类向导,Mtrssage Maps Member Variables AulnmatiumClass oaime :▼ |FindDlgL MQWa\kuqiTindDlg.b. FX.AMQWS\kuqi^FindDlg r cppITypeMembEF Add Variable... AidliiveX E VEH I KAdriTDelete Variable IDC EDIT NAMEErojed : | IcuqiFAC+1JLM1I y-tfontrol ID's :DescrlplioCStriniin strNameCancelUpdalt Col给他一个单击指令(BN_CLICKED ),然后对其编辑(EDIT )建立消息映射,输 入相应代码(在一章节中会说明)从而实现查询功能。

7. 插入播放器控件。

如今 MFC 的发展已经很先进,不仅自身拥有比较的大的控 件库,还能在 Windows 寻找已注册的软件控件。

这样一来,对控件的调用显得 尤为方便。

在 Windows 常见的影音播放器中有 Media Player ,暴风影音(Storm Player )等,我选择插入的空间是 Media Player ,因为其是 Windows 自带的,这 样便可以增强程序的广泛性。

首先建立一个对话框,然后点击鼠标右键,插入一个控件,在列表中选择 Win dows Media Player 。

Insert ActiveX ControlActiveX control:XDownloaddManager Class XPlayerOCX Control 性能益视器控制Path:C^wi ndaws\systeni32\wfnp.dll然后对话框中会出现一个传统的 Media Player 的窗口,在此窗口上点击右键,建 立类向导,打开Memble Variables ,为此控件添加相关的数据成员,方法同图四。

但要注意会弹出以下对话框X 匚述 亞Copy @PasteInsert ActiveX ControL-UploadCtl ClassVideoRenderCtl Class WangV/angX Class Windows Live Mail Mime Editor Windows Live 上裁工具 Windows Mail Mime Editor Cancel Windows Media Pla Size to Conte nt I 孟 Align Left Edges Align Top寥 Check Mnemonics 卓口砂$也甜rd,”EventSr.HEfi 1 Prop^rtie?这些都是与WMP (Windows Media Player )有关的类,其实有部分是多余的,因为在使用控件时并不会去调用,可为了快捷,直接点击0K就行了,此处不做解释。

这时播放器已经有了半条生命了,还要为其添加一项打开项目。

加入一个按键,改其属性名称为Open,然后给它建立一个单击指令(BN_CLICKED),在编辑(EDIT)中为其添加消息映射(代码下一章节可见)。

最后同样要让在主窗口上的按键于此窗口连接,方法同6。

8. 最后插入一些图片美化窗口。

选取图片,另存为“256色位图”,然后回到MFC 中,工作区中插入(In sert)图片(Bit map),点击引入(Import),加入欲加入的位图。

加入后,在想加入图片的窗口中加入图片控件(Picture),右击属性,调整为位图,在ID栏中选择刚才所加入位图的ID即可。

但要注意,加入的图片一般会覆盖在某些控件上,应该合理布局。

Insert Resource程Accelerator錮BitmapCursor DialogHTML Icon MenuSiring Tabic 忌na Toolbar O Version 伪Import Resource―Ct+S5r" ■ ^>NG司咕331字书交件名Of,文件裟型CT)•取消I well03_1024230 KByaoyong45.2 KB283 KBOpenas:3代码实现1 •为查询系统添加代码(接Two • 6)在点击编辑后,首先在・cpp 文件最上方加入头文件 #i nclude "Fi ndDIg.h"然后在后面void CKuqiView::OnButton2()函数中加入 { Fin dDlg myDlg; myDIg.DoModal (); m_pSet->MoveFirst(); while (!m_pSet->lsEOF()) { _if(m_pSet->m_colu mn1 == myDlg.m_strName) { ~ ~ 一UpdateData(FALSE); return;} m_pSet->MoveNext();} _MessageBox("您查询的球员可能不是超级巨星","请注意 ",MB_OK|MB 」CONWARNING); return;最终效果回 京带卜I理网■口1W .RbH□ Cf IQ h QI Al H 7 1^ H II tl}2 •为视频播放器插入Open按键(接Two • 7)打开Open按键的编辑后,加入如下编码:void Show::O nButto n2(){// TODO: Add your con trol no tificatio n han dler code herechar szFileFilter[]="Mp3 File(*mp3)|*mp3|""Wma File(*.wma)|*.wma|""Video File(*dat)|*dat|""Wave File(*.wav)|*.wav|""AVI File(*.avi)|*.avi|""Movie File(*.mov)|*.mov|""Media File(*.mmm)|*.mmm|""Mid File(*.mid;*,rmi)|*.mid;*.rmi|""MPEG File(*mpeg)|*.mpeg|""All File(**)|**||";〃文件类型过滤CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY ,szFileFilter);if(dlg.DoModal()==IDOK){CStri ng PathName=dlg.GetPathName();PathName.MakeUpper(); m_ActiveMovie.SetUrl(PathName);}}3 •连接“视频展示”与“播放窗”(接Two • 7)进编辑后,将CKuqiView.h文件翻至最上方,然后加入#i nclude "Show.h"再在下方按键函数中加void CKuqiView::O nButto n1(){// TODO: Add your con trol no tificati on han dler code hereShow s;s.DoModal ();}4系统测试功能性测试:在这一环节中,这个程序完成目的是比较好的。

相关主题