用VB實現屏幕陰暗操作
發表于:2007-07-14來源:作者:點擊數:
標簽:
作者:燕義懷出處:中國電腦教育報 使用過 Windows 9x的用戶都應該知道,在關閉 Windows系統 時,整個屏幕會暗下來,那么,如何在自己 開發 的應用程序中也實現這一效果呢?我們通過調用一組API函數就可以實現,如果你有興趣,就跟我來吧!這一組函數是: GetD
作者:燕義懷 出處:中國電腦教育報
使用過
Windows 9x的用戶都應該知道,在關閉
Windows系統時,整個屏幕會暗下來,那么,如何在自己
開發的應用程序中也實現這一效果呢?我們通過調用一組API函數就可以實現,如果你有興趣,就跟我來吧!這一組函數是:
GetDC :用來獲取屏幕的設備號;
ReleaseDC :釋放指定的設備;
CreatePatternBrush :創建圖形刷子;
PatBlt: 利用創建的圖形刷子填充指定設備;
DeleteObject :刪除創建的對象(與CreatePatternBrush創建的刷子對象呼應);
CreateBitmap :創建BMP對象;
SelectObject :選擇當前操作對象;
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網站(http://www.cce.com.cn)。
以上就是屏幕變暗的方法。如果要使窗體、圖片框等對象變暗,只要使窗體或圖片框等對象獲取句柄即可,修改Command1_Click過程和Command2_Click過程中的以下語句即可實現窗體變暗。
hdc5=Form1.Hdc;
Width5=Form1.width;
height5=Form1.height;
ReleaseDC(Form1.hwnd,hdct)
aa=InvalidateRect (Form1.hwnd,bottom,1)。
以上程序在
VB6.中文版,Windwos 98 環境中運行通過。有興趣的朋友可以去試一試,看到這種效果是不是覺得很驚奇呢!
原文轉自:http://www.anti-gravitydesign.com