在羅雲彬的網站上有關於“Iczelion的Win32彙編教程”的全部文檔(HTML格式的)。
連結為:http://211.90.241.130:22366/view.asp?file=102。
裡面就有關於“怎麼製作程式啟動畫面”的章節。
該節的實現思路為:
1:把啟動畫面做成一個window。該window的屬性和視窗過程函數都得是自己維護的。
2:再把自己做出來像啟動畫面的window放進動態串連庫。
3:然後在自己的主視窗程式的最開始處就載入此動態串連庫,並且執行,啟動視窗執行完後才執行我們主視窗的代碼。
但是這個教程裡面的代碼運行起來後,當顯示啟動視窗的時候,在工作列裡面,有此啟動視窗的標識。
當啟動視窗顯示完後,它自己會自動銷毀,它的工作列標識也會消失。
然後在現實主程式的window,當然在工作列也會顯示主window的標識。
最後自己想。。。,如何在現實啟動視窗的時候,工作列不會出現啟動視窗的標識。
例如sql server 2005GUI管理器的啟動視窗,顯示此啟動視窗的時候,工作列沒有顯示此啟動視窗的標識。
為了模仿sql server 2005GUI管理器的啟動視窗,我試著把啟動畫面看成一張位元影像,再把位元影像通過圖片控制項放進對話方塊中,
然後把對話方塊的邊框和圖片控制項的邊框去掉,最後對話方塊的運行效果就是在螢幕中間顯示這張圖片。
接著為這個對話方塊寫一個callback程式,寫一個TIMER callback程式來控制啟動畫面顯示的時間。
// About for IDD_STARTUPSHOW dialog process function
INT_PTR CALLBACK StartUpShow(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
SetTimer(hDlg, 1, 2000, TimerProc1);
return (INT_PTR)TRUE;
}
return (INT_PTR)FALSE;
}
// about timer function for StartUpShow function
VOID CALLBACK TimerProc1(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
KillTimer(hWnd, 1);
EndDialog(hWnd,0);
}
然後在主視窗的WM_CREATE訊息中調用我們的對話方塊。
case WM_CREATE:
// Create a dialog
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_STARTUPSHOW), hWnd, StartUpShow, NULL);
這種方法建立的啟動畫面,在顯示啟動畫面的時候,工作列不會有此啟動視窗的標識。
大家還有好的啟動畫面實現方法,也一起分享出來哦。
比如:eclipse IDE的啟動畫面上面還會顯示一些動態初始化文本資訊。