程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 利用VB6.0設計屏幕保護程序

利用VB6.0設計屏幕保護程序

編輯:VB綜合教程
屏幕保護程序可以保護顯示屏不被損壞,同時節約能源。作為屏幕保護程序,應該具有如下特性:

  1)屏幕保護程序運行時,鼠標光標被自動隱藏,在程序結束時,光標顯示。2)當單擊、移動鼠標或按下鍵盤時,屏幕保護結束,回到正常操作狀態。為了實現這些特性,在編寫VB應用程序時,可以采用如下方法:

  1、改變窗體屬性通常VB應用程序的窗體都采用有邊框的窗體外觀,但作為屏幕保護程序,應設置窗體為無邊框,且為最大化。

  2、隱藏及顯示鼠標光標在VisualBasic應用程序中隱藏及顯示鼠標光標需要運用Windows的API函數,該函數名為ShowCursor。當用參數值True調用時顯示鼠標光標,當用參數值False調用時,鼠標光標自動隱藏。

  3、檢測鼠標移動VB中有一個檢測鼠標移動的對象事件MouseMove事件。MouseMove事件通常在應用程序啟動時就會觸發,有時在鼠標並未移動的情況下,MouseMove事件仍有可能被觸發。因此如果在程序中直接用MouseMove事件檢測鼠標是否發生了移動,並不能正確反映鼠標的移動狀況。應該在MouseMove事件中編寫代碼加以控制。

  為了正確反映鼠標的移動,先用變量記錄下程序運行時的鼠標當前位置,然後用另外一組變量記錄鼠標移動後的位置,當鼠標移動前後的位置差大於一定范圍時,觸發MouseMove事件。編寫代碼如下:

  PrivateSubForm-MouseMove(ButtonAsInteger,shiftAsInteqer,XAsSingle,YAsSingle)

   StaticcurrentX,currentYAsSingle

   DimorignX,orignYAsSingle

   ’把當前的鼠標值賦給orignX和orignY

   orignX=X

   orignY=Y

   ’初始化currentX和currentY

   ifcurrentX=0andcurrentY=0Then  

  currentX=orignX  

  currentY=orignY 

  ExitSub

   Endif

   ’當鼠標移動大於一個象素時,顯示鼠標光標並退出程序

   If Abs(oriqnX-currentX)>1orAbs(orignY-currentY)>1Then 

  X=ShowCursor(True) 

  End

   Endif

  EndSub

  4、檢測鼠標單擊在VisualBasic中,單擊事件是由“Click”觸發的。當屏幕保護程序運行時遇到單擊事件,則程序運行終止。代碼編輯如下: 

  PrivateSubForm-Click()

   X=ShowCursor(True)

   End

  EndSub

  注意在結束之前先設光標的顯示為真,以免在程序結束後丟失光標。
  5、檢測鍵盤上各按鍵的狀態VisualBasic中的鍵盤活動由KeyDown觸發。代碼與單擊事件的代碼一樣。

  PrivateSubForm-KeyDown(KeyCodeAsInteger,ShiftAsInteger)

   X=ShowCursor(True)

   End

  EndSub

  下面我們將設計一個簡單的屏幕保護程序,該程序運行時,從左至右顯示一張圖片,圖片從屏幕左邊出現,至屏幕右面消失,象拉幕一樣,且重不停復該過程。假設圖片文件名為PIC.BMP,並存放在Windows文件夾中。實際操作如下:

  創建一新工程,在窗體中添加一圖片框和一個Timer控件。設置它們的屬性如下: 

  Form   

  BackColor=&H80000007& 

  BorderStyle=0  ’None

  MaxButton=False 

  MinButton=False  

  Windowstate=2 ’Maximized

  Timer   

  Intelval=5

  PictureBox 

  BackColor=&H80000007&  

  BorderStyle=0 ’None  

  AutoSize=Ture

  輸入代碼如下:  

  ’在窗體的聲明部分聲明ShowCursor函數。

  PrivateDeclareFunctionShowCursorLib“user32”(ByValbShowAsLong)AsLong

   ’在窗體上單擊鼠標時退出程序

   PrivateSubForm-Click() 

  X=ShowCursor(True) 

  End 

   EndSub

   ’在窗體上按下按鍵時退出程序

   PrivateSubForm-KeyDown(KeyCodeAsInteger,ShiftAsInteger) X=ShowCursor(True) 

  End

   EndSub

   ’加載窗體時隱藏鼠標

   PrivateSubForm-Load() 

  DimXAsLong 

  X=ShowCursor(False) 

  Picture1.Visible=False 

  Picture1.PICTure=LoadPICTure(“C:windowsPIC.BMP”) 

  Picture1.Left=-Picture1.Width

   EndSub

   ’在窗體上移動鼠標時退出程序

  PrivateSubForm-MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

   StaticcurrentX,currentYAsSingle

   DimorignX,orignYAsSingle

   ’把當前的鼠標值賦給orignX和orignY

   orignX=X

   orignY=Y

   ’初始化currentX和currentY

   If currentX=0AndcurrentY=0Then  

  currentX=orignX  

  currentY=orignY  

  ExitSub  

   EndIf

   IfAbs(orignX-currentX)>1OrAbs(orignY-currentY)>1

  Then X=ShowCursor(True)

  End   

   EndIf

  EndSub

  PrivateSubPicture1-Click() 

   X=ShowCursor(True)

   End

  EndSub

  PrivateSubPicture1-KeyDown(KeyCodeAsInteger,ShiftAsInteger)

   X=ShowCursor(True)

   End

  EndSub

  PrivateSubPicture1-MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

   StaticXlast,YlastAsSingle

   DimXnow,YnowAsSingle

   Xnow=X

   Ynow=Y

   IfXlast=0AndYlast=0Then

  Xlast=Xnow

  Ylast=Ynow

  ExitSub

   EndIf

   IfAbs(Xnow-Xlast)>1OrAbs(Ynow-Ylast)>1Then

  X=ShowCursor(True)

  End

   EndIf

  EndSub

  PrivateSubTimer1-Timer()

   Picture1.Visible=True

   Picture1.Top=(Form1.Height-Picture1.Height)/2

   Picture1.Left=Picture1.Left 50

   IfPicture1.Left>Form1.WidthThen

  Picture1.Left=-Picture1.Width

  EndIf

   EndSub

  將以上代碼編譯生成可執行文件,在保存文件對話窗中輸入文件名稱時把擴展名改為”SCR”,最後將生成的屏幕保護程序添加到Windows的系統下即可。

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved