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, ByVal lpRect As Long, ByVal bErase As Long) As Long Private bybits(1 To 16) As Byte Private hBitmap As Long, hBrush As Long Private hDesktopWnd As Long ’将图变暗,如同待关机一般 Private Sub Command1_Click() Dim rop As Long, res As Long Dim hdc5 As Long, width5 As Long, height5 As Long ’如果只要让Picture1有效果将底下三行unMark取代 hdc5, width5, height5三个值 ’hdc5 = Picture1.hdc ’width5 = Picture1.ScaleWidth ’height5 = Picture1.ScaleHeight ’底下三行设定整个萤幕都暗下来 hdc5 = GetDC(0) width5 = Screen.Width \ Screen.TwipsPerPixelX height5 = Screen.Height \ Screen.TwipsPerPixelY rop = &HA000C9 ’与原图做and运算 Call SelectObject(hdc5, hBrush) res = PatBlt(hdc5, 0, 0, width5, height5, rop) Call DeleteObject(hBrush) ’如果只暗picture1则底下这一行要起来 res = ReleaseDC(0, hdc5) End Sub ’回复原本的画面 Private Sub Command2_Click() Dim aa As Long ’如果只暗picture1则底下这一行要unMark起来 ’Picture1.Refresh ’如果只暗picture1则底下这一行要起来 aa = InvalidateRect(0, 0, 1) End Sub Private Sub Form_Load() Dim ary Dim i As Long ary = Array(&H55, &H0, &HAA, &H0, _ &H55, &H0, &HAA, &H0, _ &H55, &H0, &HAA, &H0, _ &H55, &H0, &HAA, &H0) For i = 1 To 16 bybits(i) = ary(i - 1) Next i hBitmap = CreateBitmap(8, 8, 1, 1, bybits(1)) hBrush = CreatePatternBrush(hBitmap) Picture1.ForeColor = RGB(0, 0, 0) Picture1.BackColor = RGB(255, 255, 255) Picture1.ScaleMode = 3 End Sub 转 无浪学vb吧
功能2(使屏幕变暗): '''''''''''''''''''''''''''''''''''''''''''''''''''' 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 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 InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject 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 aBitmap As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Dull() '使屏幕变暗 Dim aDC As Long, aBitmap As Long, aBrush As Long, aDesktopWnd As Long Dim lWidth5 As Long, lHeight As Long, bBit(1 To 16) As Byte
不信你开个flash在桌面然后点出关机对话框,等它变灰后取消
你会发现flash是变了的但是屏幕却一直保持在一个动作所以用一楼的方法就可以了
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, ByVal lpRect As Long, ByVal bErase As Long) As Long Private bybits(1 To 16) As Byte
Private hBitmap As Long, hBrush As Long
Private hDesktopWnd As Long
’将图变暗,如同待关机一般
Private Sub Command1_Click()
Dim rop As Long, res As Long
Dim hdc5 As Long, width5 As Long, height5 As Long
’如果只要让Picture1有效果将底下三行unMark取代 hdc5, width5, height5三个值
’hdc5 = Picture1.hdc
’width5 = Picture1.ScaleWidth
’height5 = Picture1.ScaleHeight ’底下三行设定整个萤幕都暗下来
hdc5 = GetDC(0)
width5 = Screen.Width \ Screen.TwipsPerPixelX
height5 = Screen.Height \ Screen.TwipsPerPixelY rop = &HA000C9 ’与原图做and运算
Call SelectObject(hdc5, hBrush)
res = PatBlt(hdc5, 0, 0, width5, height5, rop)
Call DeleteObject(hBrush)
’如果只暗picture1则底下这一行要起来
res = ReleaseDC(0, hdc5)
End Sub
’回复原本的画面
Private Sub Command2_Click()
Dim aa As Long
’如果只暗picture1则底下这一行要unMark起来
’Picture1.Refresh ’如果只暗picture1则底下这一行要起来
aa = InvalidateRect(0, 0, 1)
End Sub Private Sub Form_Load()
Dim ary
Dim i As Long
ary = Array(&H55, &H0, &HAA, &H0, _
&H55, &H0, &HAA, &H0, _
&H55, &H0, &HAA, &H0, _
&H55, &H0, &HAA, &H0)
For i = 1 To 16
bybits(i) = ary(i - 1)
Next i
hBitmap = CreateBitmap(8, 8, 1, 1, bybits(1))
hBrush = CreatePatternBrush(hBitmap)
Picture1.ForeColor = RGB(0, 0, 0)
Picture1.BackColor = RGB(255, 255, 255)
Picture1.ScaleMode = 3
End Sub
转 无浪学vb吧
''''''''''''''''''''''''''''''''''''''''''''''''''''
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 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 InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject 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 aBitmap As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Dull() '使屏幕变暗
Dim aDC As Long, aBitmap As Long, aBrush As Long, aDesktopWnd As Long
Dim lWidth5 As Long, lHeight As Long, bBit(1 To 16) As Byte
aDC = GetDC(0)
lWidth5 = Screen.Width \ Screen.TwipsPerPixelX
lHeight = Screen.Height \ Screen.TwipsPerPixelY
bBit(1) = &H55
bBit(2) = &H0
bBit(3) = &HAA
bBit(4) = &H0
bBit(5) = &H55
bBit(6) = &H0
bBit(7) = &HAA
bBit(8) = &H22
bBit(9) = &H55
bBit(10) = &H0
bBit(11) = &HAA
bBit(12) = &H0
bBit(13) = &H55
bBit(14) = &H0
bBit(15) = &HAA
bBit(16) = &H0
aBitmap = CreateBitmap(8, 8, 1, 1, bBit(1))
aBrush = CreatePatternBrush(aBitmap)
Call SelectObject(aDC, aBrush)
Call PatBlt(aDC, 0, 0, lWidth5, lHeight, &HA000C9)
Call DeleteObject(aBrush)
End SubPrivate Sub Comeback() '恢复屏幕变暗
Call InvalidateRect(0, 0, 1)
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''http://community.csdn.net/Expert/topic/5060/5060699.xml?temp=.4107782