«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

本站技术贴除标明为“原创”的之外,其余均为网上转载,文中我会尽量保留原作者姓名,若有侵权请与我联系,我将第一时间做出修改。谢谢!

             ——既瑜


天气预报(南京)


我的分类(专题)

首页(183)
【趣味文摘】(22)
【五子连珠】(13)
【技术文档】(136)
【电脑技术】(6)
【疑难问题】(1)
【我的心情】(5)


最新日志
花语(中英文对照版)
各种花的花语
NTFS格式的7个精彩问答(pconli
童言无忌,有趣得一蹋
给MM修电脑的三个步骤[转载]
J2EE 面试题综合
JAVA编程规则
[转] P2P之UDP穿透NAT的原理与
[转]词法分析器
文件加密技术
一个让人发狂的PI求解C程序
[转]直线生成算法之DDA
[转]利用内核对象----互斥量实现应用
[转]如何正确的计算文件收发进度
双机调试VC程序
[转]分治法优化大整数乘法 C++实现
浮点数值的内存结构
[转]双链表实现大整数的加法与乘法[VC
拜占廷将军问题[转]
某人的挂QQ的程序源代码,虽然没用了,拿

最新回复
回复:vc中的CString的操作
回复:[转]分治法优化大整数乘法 C++
回复:[转]分治法优化大整数乘法 C++
回复:花语(中英文对照版)
回复:基本排序算法比较与选择[转载]
回复:c++中强制类型转换操作符小结
回复:c++中强制类型转换操作符小结
何必那么执着于是大头猫还是愤怒的小鸟,淡
回复:浮点数值的内存结构
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:32位位图到24位位图的转换
dren, ages 16 and 20
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:各种花的花语

留言板
签写新留言

不是0-1背包喔
桂花的花语``
谢谢
提议
提议

统计
blog名称:★既瑜★
日志总数:183
评论数量:636
留言数量:-25
访问次数:1406161
建立时间:2005年3月12日

链接


http://www.nju.edu.cn
http://bbs.nju.edu.cn 
http://www.t7-online.com
http://www.csdn.net
http://www.91f.net
http://www.crsky.com
我的MSN BLOG 

联系我

  OICQ:215768265
  njucs2001@hotmail.com
  erichoo1982@gmail.com

 

W3CHINA Blog首页    管理页面    写新日志    退出


[【技术文档】]浅议软件封面的制作方法
既瑜(224499) 发表于 2005/3/16 16:52:40

 浅议软件封面的制作方法 曹朝晖  问题的提出 软件封面是指软件启动加载时显示的背景画面,它不但可以起到吸引用户目光的作用,更 重要的是当一些程序的初始化工作需要数秒钟时,软件封面可以用来向用户提供一些与该 软件相关的信息。软件封面一般包含了软件名称、版本、用户名、用户所在的公司名等信 息,显示方式一般分为静态画面和动画。软件封面的制作方法有多种,从易到难,由浅到 深,编程人员可以根据需要选择不同的制作方法。本文介绍3种软件封面的制作方法。 添加VC组件 添加组件是制作程序加载背景的一种简单方法。首先进入VC的菜单项Project|Add To Pro ject|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|MCI WNDF_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|MCI WNDF_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函数调用即可,既简单,效果又好。

阅读全文(2263) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.215 second(s), page refreshed 144754045 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号