複製鏈接
請複製以下鏈接發送給好友

啓動畫面

鎖定
啓動畫面(Start screen),即啓動一些軟件的時候,會先跳出一個啓動畫面,上面通常有軟件公司logo,版本號等一些信息,顯示一會之後自動消失。
中文名
啓動畫面
外文名
Start screen

啓動畫面基本信息

首先,我們先要搞清楚什麼是啓動畫面.舉個簡單的例子:我們啓動某些作的專業一點的程序時(比如Netscape,Adobe Acrobat等)會先跳出一個啓動畫面.上面通常有一些版權信息,版本號等.與此同時,程序後台正做着一些程序的加載或初始化工作.這個啓動畫面有別於一般的窗口.它沒有標題欄,沒有系統菜單,也沒有邊框.只有一張位圖在屏幕上顯示一會兒,然後消失 ..
在這一章我們來試試自己做一個,第一步你可能會想到把要顯示的位圖包含到資源文件中去.但是這樣做有一個缺點.你的程序只在啓動的時候顯示這張位圖,可是它卻至始至終存在於你的內存中,直到你把程序關掉.這不能不説是對內存的極大浪費.好辦法是:創建一個"資源"DLL(動態連接庫)來包含位圖和它獨特的顯示代碼.這樣,你就可以在想顯示啓動畫面的時候加載他,用完了就卸載它.所以,我們的程序需要2個模塊:主程序和啓動畫面DLL.我們要把位圖放到這個DLL的資源中去.
Microsoft Office 2013啓動畫面

啓動畫面説明

基本步驟如下:
位圖作為一個位圖資源放到DLL中去. 主程序調用 LoadLibrary 把 dll 加載到內存中去. DLL 被調用後,它會建立一個定時器用於管理啓動畫面顯示的時間.然後,註冊並創建一個沒有 標題和邊框的窗口.同時在窗口的客户區顯示位圖. 等啓動畫面的顯示時間長度到達你預先的設定值,啓動畫面消失,控制權回到主程序手中. 主程序調用 FreeLibrary 從內存中卸載 DLL .然後,做它該做的事去. 下面我們來研究細節部分

啓動畫面加載、卸載 DLL

你可以用 LoadLibrary 靈活的加載一個 DLL ,它的格式如下:
LoadLibrary proto lpDLLName:DWORD它只有一個參數: 你想要加載的 DLL 的名稱所在的地址.調用成功返回指向該DLL模塊的句柄,反之返回NULL.
要卸載 DLL, 則調用 FreeLibrary:
FreeLibrary proto hLib:DWORD它也只有一個參數: 你想要卸載的 DLL 模塊的句柄(通常就是上面那個函數返回的啦).

啓動畫面怎樣使用定時器

首先, 你要用 SetTimer 創建一個定時器:
SetTimer proto hWnd:DWORD, TimerID:DWORD, uElapse:DWORD, lpTimerFunc:DWORD hWnd接受這個定時器消息的窗口的句柄.如果,你的定時器不需要窗口接受它的消息,你也可以 用NULL作為參數
TimerID定時器的 ID 值. 由你自己定義.
uElapse定時器定的時間.以ms(千分之一秒)為單位.
lpTimerFunc處理該定時器消息的函數所在的地址.如果你用NULL作為該參數,那麼定時器的消息會被送給 hWnd 參數所指定的窗口. SetTimer 如果成功則返回定時器的 ID 否則返回 NULL. 所以最好不要把定時器的ID設為0(Pheadnius:NULL代表0, 記得嗎?).
你可以用2種方法創建定時器:
如果你有一個窗口並且定時器把消息傳給這個窗口.那麼你需要把所有的4個參數都傳送給 Settimer 函數 (lpTimerFunc參數必須為NULL). 如果你沒有窗口或者你不想讓窗口處理定時器的消息,那麼你必須在窗口句柄中傳送一個NULL.同時你要指定用於處理定時器消息的函數的地址. 在這個例子中我們要使用第一種方法.
當你設定的時間到了, 與定時器相連的窗口會收到 WM_TIMER 消息.例如,你指定 uElapse 的值為 1000, 你的窗口每過一秒都會收到 WM_TIMER 消息.
Adobe CS6系列啓動畫面