Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const VK_SNAPSHOT As Byte = &H2C Private Sub Form_Initialize() Me.Move 0, 0, 500, 200 keybd_event VK_SNAPSHOT, 1, 0, 0 Me.AutoRedraw = True End SubPrivate Sub Form_Load() Me.WindowState = 2 End SubPrivate Sub Form_Resize() Me.Picture = Clipboard.GetData(vbCFBitmap) End Sub
TO: northwolves(狼行天下) 这种方法在窗体第一次启动的时候不起作用,只有在第二次启动时,才会把图片加载到FORM或者是你随便找一个地方Ctrl+C一下,也是不能实现将背景在窗体内显示出来的效果
这种方法在窗体第一次启动的时候不起作用,只有在第二次启动时,才会把图片加载到FORM ---------------------------------------------------------------------------------- 没发现你说的现象,这样稍改一下试试:Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const VK_SNAPSHOT As Byte = &H2CPrivate Sub Form_Activate() Me.WindowState = 2 Me.Picture = Clipboard.GetData(vbCFBitmap) End SubPrivate Sub Form_Initialize() Me.AutoRedraw = True Me.Move Screen.Width / 2 - 250, Screen.Height / 2 - 100, 500, 200 keybd_event VK_SNAPSHOT, 1, 0, 0 End Sub
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Sub Form_DblClick() End End Sub Private Sub Form_Load() lHwnd = GetForegroundWindow() lHdc = GetWindowDC(lHwnd) Me.ScaleMode = 0 BM = CreateCompatibleBitmap(lHdc, Me.Width, Me.Height) SelectObject lHdc, BM Me.AutoRedraw = True Me.Cls BitBlt Me.hdc, -4, -4, Me.Width, Me.Height, lHdc, 0, 0, vbSrcCopy Me.WindowState = 2 End Sub
更正以下o 上面是截取窗体的Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Sub Form_DblClick() End End Sub Private Sub Form_Load() lHdc = GetWindowDC(0) Me.ScaleMode = 0 BM = CreateCompatibleBitmap(lHdc, Me.Width, Me.Height) SelectObject lHdc, BM Me.AutoRedraw = True Me.Cls BitBlt Me.hdc, 0, 0, Me.Width, Me.Height, lHdc, 0, 0, vbSrcCopy Me.WindowState = 2 End Sub
Private Const VK_SNAPSHOT As Byte = &H2C
Private Sub Form_Initialize()
Me.Move 0, 0, 500, 200
keybd_event VK_SNAPSHOT, 1, 0, 0
Me.AutoRedraw = True
End SubPrivate Sub Form_Load()
Me.WindowState = 2
End SubPrivate Sub Form_Resize()
Me.Picture = Clipboard.GetData(vbCFBitmap)
End Sub
1st Form_Initialize
2nd Form_Load
3rd Form_Resize
4th Form_Activate
5th Form_GotFocus
6th Form_Paint
7th Form_Unload
8th Form_Terminate
这种方法在窗体第一次启动的时候不起作用,只有在第二次启动时,才会把图片加载到FORM或者是你随便找一个地方Ctrl+C一下,也是不能实现将背景在窗体内显示出来的效果
----------------------------------------------------------------------------------
没发现你说的现象,这样稍改一下试试:Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_SNAPSHOT As Byte = &H2CPrivate Sub Form_Activate()
Me.WindowState = 2
Me.Picture = Clipboard.GetData(vbCFBitmap)
End SubPrivate Sub Form_Initialize()
Me.AutoRedraw = True
Me.Move Screen.Width / 2 - 250, Screen.Height / 2 - 100, 500, 200
keybd_event VK_SNAPSHOT, 1, 0, 0
End Sub
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Form_DblClick()
End
End Sub
Private Sub Form_Load()
lHwnd = GetForegroundWindow()
lHdc = GetWindowDC(lHwnd)
Me.ScaleMode = 0
BM = CreateCompatibleBitmap(lHdc, Me.Width, Me.Height)
SelectObject lHdc, BM
Me.AutoRedraw = True
Me.Cls
BitBlt Me.hdc, -4, -4, Me.Width, Me.Height, lHdc, 0, 0, vbSrcCopy
Me.WindowState = 2
End Sub
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Form_DblClick()
End
End Sub
Private Sub Form_Load()
lHdc = GetWindowDC(0)
Me.ScaleMode = 0
BM = CreateCompatibleBitmap(lHdc, Me.Width, Me.Height)
SelectObject lHdc, BM
Me.AutoRedraw = True
Me.Cls
BitBlt Me.hdc, 0, 0, Me.Width, Me.Height, lHdc, 0, 0, vbSrcCopy
Me.WindowState = 2
End Sub