分享
 
 
 

浅议软件封面的制作方法

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

曹朝晖

问题的提出

软件封面是指软件启动加载时显示的背景画面,它不但可以起到吸引用户目光的作用,更重要的是当一些程序的初始化工作需要数秒钟时,软件封面可以用来向用户提供一些与该软件相关的信息。软件封面一般包含了软件名称、版本、用户名、用户所在的公司名等信息,显示方式一般分为静态画面和动画。软件封面的制作方法有多种,从易到难,由浅到深,编程人员可以根据需要选择不同的制作方法。本文介绍3种软件封面的制作方法。

添加VC组件

添加组件是制作程序加载背景的一种简单方法。首先进入VC的菜单项Project|Add To Project|Components and Control…,选择Splash Screen组件。然后用Windows附带的画图程序制作一幅位图,在该位图中,可以加入各种各样的信息:如文字、图片等。最后把该位图的资源标识号改为IDB_SPLASH,并确定显示时间,定位到函数OnCreate()中:

int CsplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

……

CenterWindow();

//添加下述代码

SetTimer(1,2000,NULL);//显示2000个毫秒

return 0;

}

该方法的特点是编程简单,且容易实现。但由于只能加载一幅静态画面,所以显得过于单调。

使用Authorware

我们可以利用多媒体制作软件Authorware制作一个多媒体可执行程序(.exe),再用VC的WinExec函数调用该程序的方法来实现动画背景的加载。该方法的主要代码如下:

void CStdio1View::OnDraw(CDC* pDC)

{

CStdio1Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

//添加如下内容

if(m_j==TRUE)

{

//以最大化显示软件动画

WinExec(“YourSofeFace.exe”,SW_MAXIMIZE);

//只在开始时显示

m_j=FALSE;

}

……

}

利用MCIWnd窗口类

MCIWnd是一个控制多媒体设备(如MIDI、数字视频以及CD音频设备等)的窗口类,它提供了一系列的函数、消息和宏,可以非常容易地将多媒体播放和录制功能添加到程序中。本文介绍两种利用MCIWnd类播放AVI文件实现加载动画背景的方法。

1.一种方法是在开始时就运行AVI动画,用户不能中途干预。主要代码如下:

//初始化函数

BOOL CStdio1App::InitInstance()

{

……

//AVI文件名

CString filename=“mpc.avi”;

DWORD dwMCIWndStyle;

//播放AVI窗口的属性

dwMCIWndStyle=WS_CAPTION|WS_MAXIMIZE|WS_POPUP|WS_VISIBLE|MCIWNDF_NOPLAYBAR|MCIWNDF_NOERRORDLG|MCIWNDF_NOTIFYERROR|

MCIWNDF_NOT IFYMODE;

long lend,lpos;

//建立播放AVI的窗口

m_hwndMCIWnd=MCIWndCreate(m_hWnd,

AfxGetInstanceHandle(),dwMCIWndStyle,filename);

if(m_hwndMCIWnd)

{

//开始播放

MCIWndPlay(m_hwndMCIWnd);

//取得AVI文件结尾

lend=MCIWndGetEnd(m_hwndMCIWnd);

//当前播放的位置

lpos=MCIWndGetPosition(m_hwndMCIWnd);

//查询是否播放完了

while(lpos<lend)

{

//当前位置

lpos=MCIWndGetPosition(m_hwndMCIWnd);

}

//播放完后注销AVI窗口

MCIWndDestroy(m_hwndMCIWnd);

}

……

}

该方法比较简单,缺点是播放期间只能等待,无法人工干预。

2.第二种方法可以弥补第一种方法的缺陷,即在动画播放时,可以随时进行用户干预。主要代码如下:

BOOL CStdio1App ::InitInstance()

{

……

m_pMainWnd->ShowWindo(SW_SHOWMAXIMIZED);

m_pMainWnd->UpdateWindow();

//注册MCIWnd窗口类

if(!MCIWndRegisterClass())

return FALSE;

DWORD dwMCIWndStyle;

//AVI窗口的风格

dwMCIWndStyle=WS_CAPTION|WS_MAXIMIZE|WS_POPUP|WS_VISIBLE|MCIWNDF_NOPLAYBAR|MCIWNDF_NOERRORDLG|MCIWNDF_NOTIFYERROR|MCIWNDF_NOTIFYMODE;

//建立MCIWnd 窗口

aviWnd=::MCIWndCreate(m_pMainWnd->

m_hWnd,AfxGetInstanceHandle(),dwMCIWndStyle,“mpc.avi”);

//表示MCIWnd 窗口存在

nFlag=TRUE;

//取开始时间

CTime m_dwSplashTime=::GetCurrentTime();

//播放

MCIWndPlay(aviWnd);

m_pMainWnd->DragAcceptFiles();

return TRUE;

}

注销一个正在播放的动画窗口有两种方法,一种是设定播放时间,另一种是接受用户命令直接注销。为设定播放时间,可在程序中添加消息OnIdle,设定经过一段时间后,就注销动画窗口:

BOOL CStdio1App ::OnIdle(LONG lCount)

{

BOOL bResult=CWinApp::OnIdle(lCount);

//提取当前时间

CTime t=CTime::GetCurrentTime();

if(nFlag)

{

//设定播放时间为10000毫秒

if(t-m_dwSplashTime>10000)

{

//销毁MCIWnd 窗口

DestroyWindow(aviWnd);

//显示程序的主框架窗口

m_pMainWnd->ShowWindow(SW_NORMAL);

m_pMainWnd->UpdateWindow();

nFlag=FALSE;

}

else{

bResult=TRUE;

}

return bResult;

}

return TRUE;

}

当由用户直接键入命令结束播放时,使用映射消息PreTranslateMessage接受用户的键盘或鼠标输入:

BOOL :: CStdio1App PreTranslateMessage(MSG* pMsg)

{

if(aviWnd!=NULL&&(pMsg->message==

WM_KEYDOWN) || pMsg->message==

WM_SYSKEYDOWN || pMsg->message==

WM_LBUTTONDOWN || pMsg->message==

WM_RBUTTONDOWN || pMsg->message==

WM_MBUTTONDOWN || pMsg->message==

WM_NCLBUTTONDOWN || pMsg->message==

WM_NCRBUTTONDOWN||WM_NCMBUTTONDOWN))

{

//注销

DestroyWindow(aviWnd);

m_pMainWnd->ShowWindow(SW_MAXIMIZE);

m_pMainWnd->UpdateWindow();

nFlag=FALSE;

aviWnd=NULL;

}

return CWinApp::PreTranslateMessage(pMsg);

}

小 结

上述3种软件封面的制作方法中,一般大型软件采用第一种静态画面的方法,因为此时程序本身比较大,如果再用一个消耗大量内存的动画作为封面,就有可能造成计算机内存容量不足,影响软件的正常运行。对于面向大众化的多媒体软件,一般为了先声夺人,引人入胜,大多采用AVI动画作为软件封面。而面向学生的多媒体教学课件,一般用Authorware做一个动画程序,再用 WinExec函数调用即可,既简单,效果又好。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有