資源描述:
《打造自己特色的屏幕保護(hù)程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、打造自己特色的屏幕保護(hù)程序是否厭倦了Windows自帶的屏幕保護(hù)程序,想不想自己做一個(gè)多姿多彩的、富有人情味的屏保呢?下面我就告訴你應(yīng)該如何做。首先先給大家介紹一下屏幕保護(hù)程序的原理。其實(shí)屏幕保護(hù)程序就是普通的可執(zhí)行程序(exe)。只不過(guò)Windows把它換了一個(gè)擴(kuò)展名(scr),放在了系統(tǒng)目錄下,由操作系統(tǒng)調(diào)用而已。對(duì)WindowsNT和Windows2000這個(gè)目錄是C:WINNTsystem32,對(duì)于Win95,Win98這個(gè)目錄是C:Windows和C:Windowssystem下面就開(kāi)始動(dòng)工建立我們自己的屏保
2、吧。1.????????選擇AppWizard建立一個(gè)基于對(duì)話框的工程,工程名就叫MyScreenSaver好了(在向?qū)У牡谝徊竭x擇:DialogBased,其他的都采用默認(rèn)選項(xiàng))2.????????準(zhǔn)備2張800×600的BMP圖片(你可以視自己的愛(ài)好設(shè)置相應(yīng)的圖片數(shù)目,例子中我用了兩張),并把它們加入工程,ID分別為IDB_BITMAP1和IDB_BITMAP2,注意須保證這兩個(gè)ID號(hào)是連續(xù)的,如果你一次性地把這兩個(gè)文件加入了工程,這兩個(gè)ID號(hào)通常都是連續(xù)的。3.????????新建一個(gè)類CMyScreenWnd,各項(xiàng)設(shè)置如
3、下圖所示?4.????????點(diǎn)擊“OK”后彈出一個(gè)警告對(duì)話框,如下圖所示提示我們不能找到基類CWnd定義的頭文件,不要管它,點(diǎn)擊“確定”就行了。5.????????在MyScreenWnd.h中加入一句:#include"windef.h",windef.h中有基類CWnd的定義6.????????在MyScreenWnd.h文件的CMyScreenWnd類中加入一個(gè)公有成員函數(shù),原型如下:BOOLCreate();?7.????????在MyScreenWnd.cpp中加入Create()函數(shù)的實(shí)現(xiàn)代碼:BOOLCMyScr
4、eenWnd::Create(){if(lpszClassName==NULL){lpszClassName=AfxRegisterWndClass(CS_HREDRAW
5、CS_VREDRAW,::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_NOCURSOR)));//注冊(cè)類,IDC_NOCURSOR為新建光標(biāo)的ID(需要用戶自己繪制)//這個(gè)光標(biāo)沒(méi)有任何圖案}CRectrect(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSy
6、stemMetrics(SM_CYSCREEN));//得到顯示屏的長(zhǎng)度和寬度CreateEx(WS_EX_TOPMOST,lpszClassName,_T(""),WS_VISIBLE
7、WS_POPUP,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,GetSafeHwnd(),NULL,NULL);//創(chuàng)建一個(gè)全屏窗口SetTimer(ID_TIMER,2000,NULL);//設(shè)置定時(shí)器,2秒換一幅圖returnTRUE;}8.????????在My
8、ScreenWnd.h文件的CMyScreenWnd類中加入公有變量,原型如下staticLPCSTRlpszClassName;//注冊(cè)類名9.????????在MyScreenWnd.cpp文件中加入對(duì)靜態(tài)變量lpszClassName的初始化語(yǔ)句:(要注意這條初始化語(yǔ)句必須加在所有的函數(shù)外)CMyScreenWnd::lpszClassName=NULL;?10.????在CMyScreenWnd類中加入一個(gè)私有的成員變量,原型如下:UINTID_TIMER;并在CMyScreenWnd類的構(gòu)造函數(shù)中加入:ID_TIMER
9、=1;ID_TIMER是我們用來(lái)設(shè)置定時(shí)器時(shí)使用的ID11.????在CMyScreenWnd類中加入私有成員變量m_Point定義,原型如下:CPointm_Point;并在CMyScreenWnd類的構(gòu)造函數(shù)中加入:m_Point.x=-1;m_Point.y=-1;12.????在CMyScreenWnd類中加入私有成員函數(shù)定義,原型如下:voidDrawBitmap(CDC&dc,intm_nIndex);這個(gè)函數(shù)負(fù)責(zé)完成繪制和顯示BMP文件的工作13.????在MyScreenWnd.cpp文件中加入DrawBitma
10、p(CDC&dc,intm_nIndex)的實(shí)現(xiàn)代碼:voidCMyScreenWnd::DrawBitmap(CDC&dc,intnIndex){CDCdcMem;dcMem.CreateCompatibleDC(&dc);CBitmapm_Bitmap;m_