• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 淺議軟件封面的制作方法

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    曹朝暉 問題的提出 軟件封面是指軟件啟動加載時顯示的背景畫面,它不但可以起到吸引用戶目光的作用,更重要的是當一些程序的初始化工作需要數秒鐘時,軟件封面可以用來向用戶提供一些與該軟件相關的信息。軟件封面一般包含了軟件名稱、版本、用戶名、用戶所
    曹朝暉

    問題的提出
    軟件封面是指軟件啟動加載時顯示的背景畫面,它不但可以起到吸引用戶目光的作用,更重要的是當一些程序的初始化工作需要數秒鐘時,軟件封面可以用來向用戶提供一些與該軟件相關的信息。軟件封面一般包含了軟件名稱、版本、用戶名、用戶所在的公司名等信息,顯示方式一般分為靜態畫面和動畫。軟件封面的制作方法有多種,從易到難,由淺到深,編程人員可以根據需要選擇不同的制作方法。本文介紹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->DragAclearcase/" target="_blank" >cceptFiles();
     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函數調用即可,既簡單,效果又好。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>