封装VT文件到一个EXE文件中的方法.docx

上传人:b****5 文档编号:3436373 上传时间:2022-11-23 格式:DOCX 页数:8 大小:320.48KB
下载 相关 举报
封装VT文件到一个EXE文件中的方法.docx_第1页
第1页 / 共8页
封装VT文件到一个EXE文件中的方法.docx_第2页
第2页 / 共8页
封装VT文件到一个EXE文件中的方法.docx_第3页
第3页 / 共8页
封装VT文件到一个EXE文件中的方法.docx_第4页
第4页 / 共8页
封装VT文件到一个EXE文件中的方法.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

封装VT文件到一个EXE文件中的方法.docx

《封装VT文件到一个EXE文件中的方法.docx》由会员分享,可在线阅读,更多相关《封装VT文件到一个EXE文件中的方法.docx(8页珍藏版)》请在冰豆网上搜索。

封装VT文件到一个EXE文件中的方法.docx

封装VT文件到一个EXE文件中的方法

封装VT文件到一个EXE文件中的方法

目的:

 建立独立播放的VT可执行文件

前提:

安装VC6.0;安装DirectXSDK

  因为SDK中提供的文件就是基于VC的。

而编译这些文件要用到DirectX中的Lib和头文件等,所以DirectX_SDK要安装。

由于现在大多数朋友用的VT都是3.0或以上版本的,可以只安装DirectX9.0SDK,如果你是net开发环境,直接安装DirectX9.0cSDK版本;如果你是VC6用SDKextras把DirectX9.0SDK升级到DirectX9.0CSDK即可版本。

  经过测试VT3.08SDK对DirectX9.0CSDK完全是支持的。

  1.新建一个文件夹,把你VT安装目录下的Sdk中的Samples.dsw及StandalonePlaye放进来。

  2.用VC打开Smaple.dsw,出现寻找其他的dsp文件的窗口,选择取消。

  3.在VC的FileView中删除所有才找不到位置的档案,只留下NewPlayerStaticfiles。

  4.在Project/option中Link相应的头文件和库文件。

  如图:

(我这里安装了DirectX8SDK和DirectX9SDK)

  你要保证你的DirectXSDK的Lib目录要在C:

/ProgramFiles/MicrosoftVisualStudio/VC98/LIB的上边。

你如果只安装了DirectX9.0SDK这样编辑Lib的引用:

Project--->Setting--->Link,在Object/librarymodules栏目中只留下以下的Libd3dx9.libOpenGL32.libGlu32.libWs2_32.libVfw32.libwinmm.libmsacm32.libdinput.libdxguid.lib。

  5.这时你可以编译的文件文件(生成一个播放器).执行可以发现生成的EXE比较大,是因为我们把DLL中的函数和接口等全部封装在EXE文件中的缘故.执行这个文件。

  6.改造我们的Windows,因为我们是要封装VT到EXE中,所以把右键菜单,不需要的按钮全部去处。

在VC中的ClassView中找到回调函数LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)注释掉相应消息响应函数。

//屏蔽右键菜单:

注释掉caseWM_RBUTTONUP:

OnContextMenu();break;这一行

//屏蔽掉按钮的单击消息响应(关闭按钮的响应不应注释掉):

注释掉这几行Code:

caseBTN_PLAY:

g_CurrentPlayState|=1;

OnPlayPause(0);

break;

caseBTN_RESET:

g_CurrentResetState=2;

OnReset();

break;

caseBTN_LOAD:

g_CurrentLoadState=2;

OnLoad();

break;

  7.修改重画标题栏函数voidRepaintTitleBar(),去掉Load,Play和Pause三个按钮的显示。

//注释掉这几行代码:

DrawState(dc2,NULL,NULL,(DWORD)g_Virtools,0,3,CenterY-10,0,0,DST_BITMAP|DSS_NORMAL);

DrawState(dc2,NULL,NULL,(DWORD)g_Reset[g_CurrentResetState],0,Center-64,CenterY-9,0,0,DST_BITMAP|DSS_NORMAL);

DrawState(dc2,NULL,NULL,(DWORD)g_Plays[g_CurrentPlayState],0,Center26,CenterY-9,0,0,DST_BITMAP|DSS_NORMAL);

DrawState(dc2,NULL,NULL,(DWORD)g_Load[g_CurrentLoadState],0,Center-19,CenterY-9,0,0,DST_BITMAP|DSS_NORMAL);

  8.这时候我们来更改Windows的窗口标题:

我们让它支持中文的显示:

在VC中的ResourceView中找到StringTable.选中他下边的子项,在右键菜单中打开它的属性窗口,把Language修改成Chinese。

  9.编辑右边的TITLE项,输入你的标题。

  10.把头文件"afxRes.h"包到Resource.h文件中去。

在Resource.h中加入这一行:

#include

  11.接下来我们把我们要播放的VT文件Import到VC中的ResourceView中去.确定你的Res资源类型。

  12.你可以看到你的VT文件已经到导入进来了。

  13.接下来我和大家说一下播放VT文件的思路:

我们需要播放VT时,我们可以把VC中的VT资源导出来生成一个临时文件,然后让Player而播放即可,播放结束我们在用程序把它删除。

  14.编辑InitInstance()函数接口,把FileName变成全局变量。

//注释掉这一行

charFileName[512]="";

  把这段变量声明放到对应文件的开始部分.

  15.继续编辑InitInstance()函数,在SetCursor(:

:

LoadCursor(NULL,IDC_ARROW));这一行下边加入导出VT临时文件的Code:

CStringType="VIRTOOL";

HRSRCrest=FindResource(NULL,MAKEINTRESOURCE(IDR_VIRTOOL1),Type);

HGLOBALgl=LoadResource(NULL,rest);

LPVOIDlp=LockResource(gl);//返回指向资源内存的地址的指针。

lstrcpyn(FileName,"c:

//Temp.vmo",512);

HANDLEfp;

fp=CreateFile(FileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);

DWORDa;//sizeofResource得到资源文件的大小

if(!

WriteFile(fp,lp,SizeofResource(NULL,rest),&a,NULL))

returnfalse;

CloseHandle(fp);//关闭句柄

FreeResource(gl);//释放内存

  你可以看到我把VT的临时文件放到了C:

目录下.你可以任意修改目录到任何地方。

  16.实现Exit时删除临时文件:

  修改voidExitVirtoolsPlayer()函数,加入这一行代码到PostQuitMessage(0);这一行的前边:

DeleteFile(FileName)

附件下载

  框架文件你可能要自己导入VMO资源文件,Type的名字文件中是"VIRTOOL",ID为IDR_VIRTOOL1,请注意要根据实际情况进行修改。

说明:

我这个框架文件是基于VT3.0SDK开发的,如果你用VTSDK是3.08版的话,编译会出现使问题。

因为3.08的Lib已经更新了(比如Mp3ReaderLib已经合并到WavReaderLib了等等...)

 

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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