【提问】:如何截取一个背景到一个全屏的窗体中

Purview 2005-10-30 05:48:36
我的大概想法是
1.在窗体创建时就截取背景
2.在窗体完全加载完后将背景在窗体内显示出来

可是,我怎么搞也不成功!唉!~·

大家帮帮我呀!
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LEOlws 2005-11-05
  • 打赏
  • 举报
回复
感觉都不怎么样!
hxy2003 2005-11-01
  • 打赏
  • 举报
回复
UO
孙小雄 2005-10-30
  • 打赏
  • 举报
回复
更正以下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
孙小雄 2005-10-30
  • 打赏
  • 举报
回复
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
northwolves 2005-10-30
  • 打赏
  • 举报
回复
这种方法在窗体第一次启动的时候不起作用,只有在第二次启动时,才会把图片加载到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 = &H2C

Private Sub Form_Activate()
Me.WindowState = 2
Me.Picture = Clipboard.GetData(vbCFBitmap)
End Sub

Private 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
Purview 2005-10-30
  • 打赏
  • 举报
回复
TO: northwolves(狼行天下)
这种方法在窗体第一次启动的时候不起作用,只有在第二次启动时,才会把图片加载到FORM

或者是你随便找一个地方Ctrl+C一下,也是不能实现将背景在窗体内显示出来的效果
northwolves 2005-10-30
  • 打赏
  • 举报
回复
窗口事件的发生顺序
1st Form_Initialize
2nd Form_Load
3rd Form_Resize
4th Form_Activate
5th Form_GotFocus
6th Form_Paint
7th Form_Unload
8th Form_Terminate
northwolves 2005-10-30
  • 打赏
  • 举报
回复
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 Sub



Private Sub Form_Load()
Me.WindowState = 2
End Sub



Private Sub Form_Resize()
Me.Picture = Clipboard.GetData(vbCFBitmap)
End Sub

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧