用VB實現螢幕陰暗操作 (轉)

worldblog發表於2007-12-07
用VB實現螢幕陰暗操作 (轉)[@more@]用VB實現螢幕陰暗操作
作者:燕義懷 出處:中國教育報 點選:1452 

 使用過 9x的都應該知道,在關閉Windows時,整個螢幕會暗下來,那麼,如何在自己開發的應用中也實現這一效果呢?我們透過一組就可以實現,如果你有興趣,就跟我來吧!這一組函式是:
 GetDC :用來獲取螢幕的裝置號;
 ReleaseDC :釋放指定的裝置;
 CreatePatternBrush :建立圖形刷子;
 PatBlt: 利用建立的圖形刷子填充指定裝置;
 Delete :刪除建立的(與CreatePatternBrush建立的刷子物件呼應);
 CreateBitmap :建立BMP物件;
 Object :選擇當前操作物件;
 InvalidateRect :使操作無效,即恢復變暗前的狀態。 
 
 基本思路
 
 首先建立一個點陣圖物件,然後,利用此點陣圖物件建立一個圖案刷子,選擇指定裝置為當前裝置,利用已經建立的圖案刷子填充當前裝置,刪除建立的刷子物件即可使當前裝置變暗。呼叫InvalidateRect函式就可使指定裝置恢復到變暗前的狀態。
 
 步 驟
 
 1、建立一個Form1窗體,設定2個Command按鈕,將Command1和Command2的Caption屬性分別設定為:“變暗”和“恢復”。
 2、在窗體程式碼模組中宣告API函式和相應的型別,程式碼如下:
 Private Type RECT
 Left As Long
 Top As Long
 Right As Long
 Bottom As Long
 End Type
 Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
 Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
 Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
 Private Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
 Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
 Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
 Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
 Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
 3、編寫程式碼實現程式功能,由於版面所限,具體程式碼將放到CCE網站()。
 以上就是螢幕變暗的方法。如果要使窗體、圖片框等物件變暗,只要使窗體或圖片框等物件獲取控制程式碼即可,修改Command1_Click過程和Command2_Click過程中的以下語句即可實現窗體變暗。
 hdc5=Form1.Hdc;
 Width5=Form1.width;
 height5=Form1.height;
 ReleaseDC(Form1.hwnd,hdct) 
 aa=InvalidateRect (Form1.hwnd,bottom,1)。
 以上程式在.中文版,Windwos 98 環境中執行透過。有興趣的朋友可以去試一試,看到這種效果是不是覺得很驚奇呢!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989595/,如需轉載,請註明出處,否則將追究法律責任。

相關文章