| 
| 
OICQ:215768265
  njucs2001@hotmail.com
  erichoo1982@gmail.com
| | « | October 2025 | » |  | 日 | 一 | 二 | 三 | 四 | 五 | 六 |  |  |  |  | 1 | 2 | 3 | 4 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |  | |  | 
 |  
| 公告 |  
|  
本站技术贴除标明为“原创”的之外,其余均为网上转载,文中我会尽量保留原作者姓名,若有侵权请与我联系,我将第一时间做出修改。谢谢!              ——既瑜 |  
| 统计 |  
| blog名称:★既瑜★ 日志总数:183
 评论数量:636
 留言数量:-25
 访问次数:1417101
 建立时间:2005年3月12日
 |  |  
 
 | W3CHINA Blog首页    管理页面    写新日志    退出 
|  [【技术文档】]浅议软件封面的制作方法 |  
| 浅议软件封面的制作方法 曹朝晖  问题的提出 软件封面是指软件启动加载时显示的背景画面,它不但可以起到吸引用户目光的作用,更 重要的是当一些程序的初始化工作需要数秒钟时,软件封面可以用来向用户提供一些与该 软件相关的信息。软件封面一般包含了软件名称、版本、用户名、用户所在的公司名等信 息,显示方式一般分为静态画面和动画。软件封面的制作方法有多种,从易到难,由浅到 深,编程人员可以根据需要选择不同的制作方法。本文介绍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函数调用即可,既简单,效果又好。
 
 |  
| 
 阅读全文(2294) | 回复(0) | 编辑 | 精华
 |  
 
 |