用VC++如何获取屏幕图像,且显示出来

用VC++如何获取屏幕图像,且显示出来,第1张

HBITMAP holdbitmap,hbitmap;

HDC hdc,hscreendc,hmemdc;

hdc=GetWindowDC(hwnd);//获得整个hwnd指向的窗口的DC

GetWindowRect(hwnd,&rect);//获得窗口矩形

hscreendc=CreateDC("DISPLAY",NULL,NULL,NULL);//获得整个屏幕的设备DC

hmemdc=CreateCompatibleDC(hdc);//创建与设备DC兼容的内存DC

hbitmap=CreateCompatibleBitmap(hscreendc,GetDeviceCaps(hdcScreen,HORZRES),GetDeviceCaps(hdcScreen,VERTRES)); //创建与屏幕DC兼容的位图

holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);//将hbitmap指向的位图选入内存DC,返回值为原来的位图holdbitmap,先保存下来后面恢复

BitBlt(hmemdc,0,0,rectright-rectleft,rectbottom-recttop,hscreendc,0,0,SRCCOPY);//将设备DC的图象复制到内存DC,这样就把屏幕图象保存到hbitmap所指向的BITMAP结构体中了

点击按钮后,再用BitBlt显示出来:

case WM_COMMAND:

holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);//将保存图象的hbitmap选进内存DC

BitBlt(hdc,0,0,rectright-rectleft,rectbottom-recttop,hmemdc,0,0,SRCCOPY);//将内存DC的图象显示到窗口上

以上注意hbitmap变量的作用范围

获取句柄不一定要用 FindWindow ,还可以枚举:

Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Const GW_HWNDFIRST = 0

Private Const GW_HWNDNEXT = 2

Private Sub Command1_Click()

Dim lngHwnd As Long, ret As Long

Dim s As String 255

Dim sName As String

lngHwnd = GetWindow(Mehwnd, GW_HWNDFIRST)

Do While lngHwnd

ret = GetWindowText(lngHwnd, s, 255)

sName = Blank(s)

If InStr(sName, "记事本") <> 0 Then '这里“记事本”替换成程序标题相同的部分

'这里写 将句柄加入数组的相关代码

End If

lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)

Loop

End Sub

Public Function Blank(ByVal szString As String) As String

Dim l As Integer

l = InStr(szString, Chr(0))

If l > 0 Then

Blank = Left(szString, l - 1)

Else

Blank = szString

End If

End Function

DC的句柄和窗口的句柄是不同的,不能混用。

要获取DC句柄,首先要看你在那个函数里面(有些函数有DC指针参数,有些窗口类成员函数可以直接访问DC)

举例:

CClientDC dc(this);

HDC hDC = dcGetSafeHdc();

以上就是关于用VC++如何获取屏幕图像,且显示出来全部的内容,包括:用VC++如何获取屏幕图像,且显示出来、vb如何获取到窗口的句柄、MFC中如何获取窗口句柄然后使用,内有具体函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9417772.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存