王朝网络
分享
 
 
 

如何在VC5下定制多媒体真彩封页

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

在自己的应用程序定制多媒体真彩封页,可以使应用程序在显示名称和版权特性时丰富程序界面,避免由于应用程序启动前进行大量数据初始化时用户进行较长时间的空等待过程,在给应用程序增加了生动特性和专业特性的同时,也起到了宣传和广告的作用。虽然VC5中具有特定的类来实现这一功能,但通过定制自己的应用程序多媒体启动封页,还可使自己的应用程序别具一格。VC5中的实现步骤:

1.制作封页位图:制作应用程序多媒体启动封页真彩位图,记录位图的高度和宽度,建立所需要的其它多媒体声音等文件;

2.建立应用程序:利用FILE->NEW菜单建立名为START的多文档应用程序框架,并利用类向导AppWizard增加基类为generic CWnd 的新类CSplashWnd,将新类的文件改名为splash.h和splash.cpp,并增加WM_CREATE和WM_PAINT的消息映射函数;

3.定义变量和函数:在splash.h中定义如下成员变量和函数:

public:

BOOL Create(CWnd* pParentWnd=NULL);

HANDLE hBitsSrc;

LPSTR pBitsSrc;

UINT iW,iH;

4.建立启动封页窗口:在splash.cpp中增加Create函数,建立显示位图的弹出窗口:

#include "windowsx.h"//增加扩展窗口建立

......

struct{//位图文件头结构

BITMAPINFOHEADER Header;

}Info;

BOOL CSplashWnd::Create(CWnd* pParentWnd)

{ //建立显示位图的弹出窗口

return CreateEx(0,AfxRegisterWndClass(0,

AfxGetApp()->LoadStandardCursor(IDC_ARROW)),

NULL,WS_POPUP|WS_VISIBLE,0,0,672,480,

pParentWnd->GetSafeHwnd(),NULL);

}

int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)

{ ......

// TODO: Add your specialized creation code here

CenterWindow();//使弹出窗口居中

return 0;

}

5.完善析构函数:在splash.cpp中完善析构函数,为显示位图作准备:

CSplashWnd::CSplashWnd()//完善析构函数

{ iW=672;iH=480;//位图的宽度和高度

Info.Header.biSize=sizeof(BITMAPINFOHEADER);

Info.Header.biWidth=iW;

Info.Header.biHeight=iH;

Info.Header.biPlanes=1L;

Info.Header.biBitCount=24L;

hBitsSrc=::GlobalAlloc(GHND,(long)(iW*iH*3));//分配内存

pBitsSrc=(LPSTR)::GlobalLock(hBitsSrc);//加锁内存

}

CSplashWnd::~CSplashWnd()

{ ::GlobalUnlock(hBitsSrc);//解锁内存

::GlobalFree(hBitsSrc);//释放内存

}

6.显示真彩位图:在splash.cpp中完善Onpaint函数,实现真彩位图的显示:

void CSplashWnd::OnPaint()

{......// TODO: Add your message handler code here

CFile fbmp;

fbmp.Open("c:\\windows\\EMC1.BMP",CFile::modeRead|

CFile::typeBinary|CFile::shareExclusive);//打开文件

fbmp.Seek(54,CFile::begin);//位图文件头为54字节

fbmp.ReadHuge(pBitsSrc,(long)(iW*iH*3));//读文件

fbmp.Close();//关闭文件

HBITMAP hBitmap=::CreateDIBitmap(dc.m_hDC,

(BITMAPINFOHEADER FAR*)&(Info.Header),CBM_INIT,

pBitsSrc,(LPBITMAPINFO)&Info,DIB_RGB_COLORS);//建立位图

HDC hMemDC=::CreateCompatibleDC(dc.m_hDC);//建立内存

HBITMAP hBitmapOld=SelectBitmap(hMemDC,hBitmap);//选择对象

::StretchBlt(dc.m_hDC,0,0,iW,iH,hMemDC,

0,0,iW,iH,SRCCOPY);//显示真彩位图

::DeleteObject(SelectObject(hMemDC,hBitmapOld));//删除位图

}

7.弹出窗口类声明:在Mainfrm.h中增加代码,为显示和撤销弹出窗口作准备:

class CsplashWnd;//闪烁窗口类

......

class CMainFrame : public CMDIFrameWnd

{......

public:

CSplashWnd SplashWnd;//声明类

8.真彩封页的实现:在Mainfrm.cpp中增加显示弹出窗口、播放音乐、延时功能和撤销弹出窗口的代码,以实现真彩封页的整个处理过程:

#include "splash.h" //新类支持

#include "mmsystem.h"//多媒体支持

#pragma comment(lib,"WINMM.LIB")//多媒体支持

......

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

SplashWnd.Create(this);//创建弹出窗口

SplashWnd.ShowWindow(SW_SHOW);//显示弹出窗口

SplashWnd.UpdateWindow();//更新弹出窗口

int dd=sndPlaySound("c:\\windows\\reminder.wav",

SND_ASYNC|SND_LOOP);//异步播放WAV文件

if (dd==FALSE){//参数SND_ASYNC|SND_LOOP可循环播放

AfxMessageBox("播放WAV文件错误~");

}

::Sleep(2000);//进程休眠2秒

......//应用程序初始化工作

dd=sndPlaySound("",SND_ASYNC);//终止播放.WAV文件

SplashWnd.DestroyWindow();//撤消弹出窗口

return 0;

}

经过上述八个步骤的处理,整个多媒体真彩启动封页制作完毕。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有