| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 886 人关注过本帖
标题:[求助]用VB抓图
只看楼主 加入收藏
kaihua
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2004-11-26
结帖率:66.67%
收藏
 问题点数:0 回复次数:5 
[求助]用VB抓图

如何用VB抓图?

下面的例子将演示怎样把桌面图片用BitBlt函数复制到窗体中,你可以利用它制作抓图程序,或是制作屏保程序。

把以下代码加入模块:

Declare Function BitBlt Lib "gdi32" _

(ByVal hDestDC As Integer, ByVal x As Integer, _

ByVal y As Integer, ByVal nWidth As Integer, _

ByVal nHeight As Integer, ByVal _

hSrcDC As Integer, ByVal xSrc As Integer, _

ByVal ySrc As Integer, ByVal dwRop As _

Long) As Integer

 

Declare Function GetDesktopWindow Lib "user32" () As Long

 

Declare Function GetDC Lib "user32" _

(ByVal hwnd As Long) As Long

 

Public Const SRCCOPY = &HCC0020

Public Const SRCAND = &H8800C6

Public Const SRCINVERT = &H660046

 

窗体代码:

设置窗体属性如下:

 

AutoRedraw True

BorderStyle 0 - None

WindowState 2 - Maximized

 

现在,把下面的代码加入到窗体中。

 

Private Sub Form_Load()

Dim DeskhWnd As Long, DeskDC As Long

'得到桌面的hWnd

DeskhWnd& = GetDesktopWindow()

DeskDC& = GetDC(DeskhWnd&)

 

BitBlt Form1.hDC, 0&, 0&, _Screen.Width, Screen.Height, DeskDC&, _

0&, 0&, SRCCOPY

 

End Sub

 

向窗体添加一个命令按钮,并加入以下代码:

 

Private Sub Command1_Click()

Unload Me

End

End Sub

初来学习
我照着上面的代码 做 怎么 这句

BitBlt Form1.hDC, 0&, 0&, _Screen.Width, Screen.Height, DeskDC&, _

0&, 0&, SRCCOPY

提示错误 请指教 谢谢

搜索更多相关主题的帖子: Integer ByVal BitBlt 模块 
2006-01-12 21:14
moshen62
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-1-12
收藏
得分:0 

Option Explicit

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 Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source

'
'设置窗体属性如下:

'AutoRedraw True
'
'BorderStyle 0 - None
'
'WindowState 2 - Maximized


'现在,把下面的代码加入到窗体中。

Private Sub Form_Load()

Dim DeskhWnd As Long, DeskDC As Long

'得到桌面的hWnd

DeskhWnd& = GetDesktopWindow()

DeskDC& = GetDC(DeskhWnd&)

BitBlt Form1.hDC, 0&, 0&, Screen.Width, Screen.Height, DeskDC&, 0&, 0&, SRCCOPY
End Sub

'向窗体添加一个命令按钮,并加入以下代码:
Private Sub Command1_Click()
Unload Me
End Sub


没有问题啊


2006-01-13 09:10
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 

示例中的代码是隔行写一行的。你要把所有的空行删掉才可以正常运行。
将下面这错误的语句:

BitBlt Form1.hDC, 0&, 0&, _Screen.Width, Screen.Height, DeskDC&, _

0&, 0&, SRCCOPY

改成

BitBlt Form1.hDC, 0&, 0&, _Screen.Width, Screen.Height, DeskDC&, _
0&, 0&, SRCCOPY

其他的语句也这样删掉空行,再运行就可以了。

2006-01-13 12:39
moshen62
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-1-12
收藏
得分:0 

就像我发的那段一样


2006-01-13 13:57
kaihua
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2004-11-26
收藏
得分:0 

我怎么照做了 说 :“溢出”
还是不能运行
是那里 错了呢

谢谢大家的 帮助

[此贴子已经被作者于2006-1-13 21:11:55编辑过]

2006-01-13 20:48
kaihua
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2004-11-26
收藏
得分:0 
以下是引用moshen62在2006-1-13 13:57:00的发言:

就像我发的那段一样

按你的代码做 可以运行
为什么按 我的那个代码 把空格都删除
运行就说溢出呢

2006-01-13 21:23
快速回复:[求助]用VB抓图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048365 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved