欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    VC++多媒体编程.ppt

    • 资源ID:242304       资源大小:526KB        全文页数:39页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VC++多媒体编程.ppt

    MMT,第十二讲 VC+多媒体编程,YANGZHOUDAXUE,第1节 C+(面向对象),类和对象 在现实世界中,经常有属于同一类的对象。在面向对象软件中,也有很多共享相同特征的不同的对象。可以利用这些对象的相同特征为它们建立一个类。定义:类是定义同一类所有对象的变量和方法的原型。类一般包含数据成员和成员函数。成员函数是用来对数据成员进行操作的,又称为“方法”。类的定义格式一般地分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据成员的说明和成员函数的说明。实现部分是用来对成员函数的定义。二者一般分开定义。,类的一般定义格式如下:class public:private:;,class是定义类的关键字。关键字public,private,protected被称为访问权限修饰符。它们在类体内出现的先后顺序无关,并且允许多次出现。,是类定义中的实现部分,包含所有在类体内说明的函数的定义。允许一个成员函数的类体内定义。,一个日期类定义的例子:/类的说明部分 classTDate public:voidSetDate(inty,intm,intd);voidPrint();private:intyear,month,day;,其中public部分可被对象访问,private(或protected)部分不可被对象访问。,/类的实现部分 voidTDate:SetDate(inty,intm,intd)year=y;month=m;day=d;voidTDate:Print();coutyear.month.dayendl;,在VC+中,类的说明部分和实现部分不但分开定义,而且在不同的文件中。前者文件后缀为.h,后者文件后缀为.cpp。文件名相同。,类的使用类一定是通过定义它的对象(实例化)来使用的。void main()TDate Today;Today.SetDate(2008,8,8);Today.Print();,构造函数和析构函数,在类中,函数名和类名相同的函数称为构造函数,在定义对象时自动执行。函数名为 类名 的函数称为析构函数,在释放对象时自动执行。,classTDate public:voidTDate();voidSetDate(inty,intm,intd);voidPrint();voidTDate();private:intyear,month,day;,voidTDate:TDate()year=2009;month=4;day=1;voidTDate:TDate(),当执行TDate Today;时,Today就会初始化为2009.4.1。,在类中,构造函数和析构函数是必须的。如果不定义,系统会自动生成构造和析构空函数。构造函数用来做初始化,析构函数一般用来做收尾工作。构造函数可以带参数。,classTDate public:voidTDate(inty,intm,intd);voidPrint();voidTDate();private:intyear,month,day;,voidTDate:TDate(int y,intm,intd)year=y;month=m;day=d;,定义对象时:TDate Today(2009,4,1);,继承,类的继承性就是子类自动共享父类的数据和方法的机制,表示类之间的关系。定义子类的语法如下:class:.其中继承方式为public,private或protected。,1、数据和函数都被继承。2、建立对象时,首先调用基类的构造函数,然后调用派生类的构造函数。3、对象析构时,与构造时相反,先执行派生类的析构函数体,最后是执行基类的析构函数。4、构造函数和析构函数不可继承。5、可以一级一级继承下去。,#include class Sampleprotected:int x,y;public:Sample()x=1;y=2;void disp();Sample();void Sample:disp()coutx=x,y=yendl;,class son:public Sampleprivate:int z;public:son(int c)z=c;void add()coutthe sum is x+y+zendl;son();,void main()Sample s1;s1.disp();son s2(5);s2.disp();s2.add();,运行结果:x=1,y=2 x=1,y=2 the sum is 8,封装:降低耦合度;类的内部可以自由修改;类具有对外的清晰接口。,多态:不同的对象可以执行相同的动作,但通过他们自己的实现代码来执行。分为静态联编方式和动态联编方式。,类的封装、继承和多态三种特性构成了面向对象程序设计思想的基础。,窗口窗口是指能进行图形处理的视觉上可见的程序窗口,包括可见不可见的消息处理能力。消息消息是消息驱动机制的核心,通过结构MSG来描述:typedef struct tagMSG HWND hwnd;/接收窗口的句柄 UINT message;/消息号 WPAPAM wParam;/消息参数 LPAPAM lParam;/消息参数 DWORD time;/发送消息时间 POINT pt;/光标位置 MSG;,第2节 windows编程,句柄在Windows环境中,句柄是用来标识项目的,这些项目包括:模块(module)任务(task)实例(instance)文件(file)内存块(block of memory)菜单(menu)控制(control)字体(font)资源(resource)GDI对象(GDI object)等从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后通过其他的WINDOWS函数使用该句柄,以引用相应的对象。,资源包括图标、位图、对话框、工具条和菜单等。资源集中在一个资源文件中定义,有特定的操作资源的函数(加载、使用、丢弃)。每个资源都有唯一的全局资源ID号。图形设备接口图形设备接口(GDI:Graphics Device Interface),它的主要任务是负责系统与绘图程序之间的信息交换,处理Windows程序的图形输出。图形设备接口(GDI)提供了一系列的函数和相关的结构,应用程序可以使用它们在显示器、打印机或其他设备上生成图形化的输出结果。GDI通过设备环境(Device Context,DC),可以直接向指定的设备进行输出。设备环境包含设备的信息。应用程序使用设备环境函数来创建DC。GDI将返回一个设备环境句柄,在随后的调用中,该句柄用于表示该设备。,API函数,API(Application Programming Interface,应用程序编程接口)一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。windows APIWindows API是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll.)。SDK(Software Developers Kit)编程直接调用API函数从最底层设计程序的Windows编程方式。,#include stdafx.hBOOL InitInstance(HINSTANCE,int);LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)MSG msg;/程序窗口初始化if(!InitInstance(hInstance,nCmdShow)return FALSE;/消息循环while(GetMessage(,例:,BOOL InitInstance(HINSTANCE hInstance,int nCmdShow)HWND hWnd;/窗口句柄 WNDCLASS wcex;/窗口类对象/填充窗口类结构wcex.style=CS_HREDRAW|CS_VREDRAW;wcex.lpfnWndProc=(WNDPROC)WndProc;/窗口消息处理函数wcex.cbClsExtra=0;wcex.cbWndExtra=0;wcex.hInstance=hInstance;wcex.hIcon=LoadIcon(hInstance,IDI_APPLICATION);wcex.hCursor=LoadCursor(NULL,IDC_ARROW);wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName=NULL;wcex.lpszClassName=hello world;RegisterClass(,LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)char MSG13=Hello world!;switch(message)case WM_PAINT:/窗口重画消息HDC hdc;PAINTSTRUCT ps;hdc=BeginPaint(hWnd,.LIB和.DLL,lib是在程序编译连接的时候就连接的文件。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。,.dll是在程序运行的时候才连接的文件,是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。,在编程时,普遍大量使用现成的LIB或DLL实现程序功能。可以看作函数库。,第3节 MFC编程,MFC(Microsoft Foundation Classes,微软基础类)C+是一种程序设计语言,而VC+是一种编译器+源程序编辑器,MFC就是挂在它之上的一个辅助软件开发包。MFC是对API函数的封装。MFC类绝大部分用来进行界面开发,关联一个窗口的动作。,消息映射(处理标准windows消息),(A)在类的头文件中说明消息映射表。DECLARE_MESSAGE_MAP()(B)在类的头文件中说明消息响应函数函数。afx_msg void OnPaint();(C)在类的实现文件中定义消息映射表 BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd)ON_WM_PAINT()/响应WM_PAINT消息 END_MESSAGE_MAP(),命令和通知(处理菜单消息),头文件:/AFX_MSG(CPictureView)afx_msg void OnFileOpen();/AFX_MSGDECLARE_MESSAGE_MAP(),CPP文件:BEGIN_MESSAGE_MAP(CPictureView,CScrollView)/AFX_MSG_MAP(CPictureView)ON_COMMAND(ID_FILE_OPEN,OnFileOpen)/AFX_MSG_MAPEND_MESSAGE_MAP(),CWinApp:应用程序类MFC 中的主应用程序类封装用于 Windows 操作系统的应用程序的初始化、运行和终止。基于MFC生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。,#includeclass CExpApp:public CWinApppublic:virtual BOOL InitInstance();class CExpFrame:public CFrameWndpublic:CExpFrame();protected:afx_msg void OnPaint();DECLARE_MESSAGE_MAP();,例:,CExpApp theApp;BOOL CExpApp:InitInstance()m_pMainWnd=new CExpFrame();m_pMainWnd-ShowWindow(m_nCmdShow);m_pMainWnd-UpdateWindow();return TRUE;BEGIN_MESSAGE_MAP(CExpFrame,CFrameWnd)ON_WM_PAINT()END_MESSAGE_MAP()CExpFrame:CExpFrame()Create(NULL,MFC Programe!);void CExpFrame:OnPaint()CPaintDC dc(this);dc.TextOut(0,20,hello world!);,第4节 APPWizard MFC编程,文档视图结构文档:文档是用来保存数据以及关于数据的处理的,文档是被视图观察的对象。文档类由CDocument类派生。视图:视图在Windows中就是一个窗口,也就是一个可视化的矩形区域。视图是用来表示文档的数据的。但是每个视图必需依附于一个框架。视图类由CView类派生。框架:框架实际也是一个Windows窗口。在框架上可以放置菜单、工具栏、状态栏等。而视图则放在框架的客户区。因此一般的程序窗口实际上Frame和View共同作用的结果。框架类由CFrame类派生。,第5节 多媒体编程(实验内容),实验一 VC+的使用实验二 播放wav音频文件实验三 打开和保存BMP位图实验四 亮度方程实验五 彩色图像子采样实验六 播放视频文件,4.1 WAV音频操作程序基于对话框。利用winmm.lib中的mciSendCommand函数。这个函数用来打开MCI设备并且通过给设备发送MCI命令来对设备进行控制,这个函数的原型如下:MCIERROR mciSendCommand(MCIDEVICEID IDDevice,/要控制的设备的ID,无符号整数 UINT uMsg,/MCI命令,如MCI_OPEN,MCI_PLAY,/MCI_CLOSE等 DWORD fdwCommand,/命令的参数,不同的命令有不同/的参数可以选择 DWORD dwParam/一个结构变量的地址);,CString filename;static char szFilter=波形音频文件(*.wav)|*.wav;CFileDialog dlg(TRUE,wav,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);if(dlg.DoModal()=IDOK)filename=dlg.GetPathName();,打开文件,4.2 图像操作,显示位图函数StretchDIBits,函数原型:int StretchDIBits(HDC hdc,/设备上下文句柄 int XDest,/目的区域左上角X轴坐标 int YDest,/目的区域左上角Y轴坐标 int nDestWidth,/目的区域的宽度 int nDestHeight,/目的区域的高度 int XSrc,/源区域左上角X轴坐标 int YSrc,/源区域左上角Y轴坐标 int nSrcWidth,/源区域的宽度 int nSrcHeight,/源区域的高度 CONST VOID*lpBits,/指向位图的比特数据 CONST BITMAPINFO*lpBitsInfo,/位图头部信息的指针 UINT iUsage,/索引调色板指定 DWORD dwRop/光栅运算指定);,class CDIB:public CObject/自己编写用于位图操作的DIB类public:BITMAPFILEHEADER bfh;BITMAPINFOHEADER bih;BITMAPINFO*m_pBMI;BYTE*m_pDIBData;public:CDIB();virtual CDIB();int GetBmpRealWidth();BOOL SaveFile(const CString filename);virtual BOOL LoadFromFile(LPCTSTR lpszFileName);virtual void ShowDIB(CDC*pDC,int nLeft,int nTop,int nWidth,int nHeight);int GetDIBWidth();int GetDIBHeight();,图像操作的流程1、程序基于多文档的文档视图结构。2、按钮的响应函数在视图类中。3、在视图类中定义DIB类的对象,调用DIB类的方法,完成各项操作。4、显示位图的工作,通过视图类中的OnDraw函数实现。5、在视图类其他函数中通过Invalidate(TRUE);语句,调用OnDraw函数。,添加一个对图像的新操作1、添加一个菜单按钮(方法见实验指导书)2、在View类中添加按钮对应的响应函数(方法见实验指导书)3、在DIB类中编写对图像操作的函数4、在View类中的按钮响应函数调用DIB类中的函数5、在View类中的按钮响应函数最后执行Invalidate(TRUE);,4.3 视频操作,程序基于对话框 使用vfw.lib库提供的视频文件操作函数:MCIWndCreate函数建立一个视频窗口,对视频操作的要求(例如播放,暂停,进度条等)可在建立函数时以参数形式告知。MCIWndStop函数停止播放。MCIWndDestroy函数释放视频资源并关闭窗口。,实验和课程设计要求,1、每个工程的工程名必需含有自己的班级号和学号(3个数字)。例如:Picture101PlayWave211一共5个工程。2、程序可以和指导书上不同。3、课程设计必需利用课余时间。4、课程设计可以讨论,但是在报告中要写明。,

    注意事项

    本文(VC++多媒体编程.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开