当前位置:编程学习 > C#/ASP.NET >>

如何取得隐藏窗口画面并保存为一张位图 ,急!!!

假设有两个窗口,窗口1处于全屏状态,窗口2非显示,如何在保持窗口1全屏的情况下,取得窗口2的画面并保存为一张位图?我試過使用bitblt函數,但只能把屏幕上的控件拷貝過去,如果非屏幕上的控件就無法拷貝. 

以上均在vb6.0程序下. 

请教,谢谢 
--------------------编程问答-------------------- 截取当前窗体的函数,我环境是vb.net2003,给你参考下吧
Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As Integer) As Integer
    Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer
    Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Integer, ByVal hObject As Integer) As Integer
    Private Declare Function BitBlt Lib "GDI32" (ByVal srchDC As Integer, ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcW As Integer, ByVal srcH As Integer, ByVal desthDC As Integer, ByVal destX As Integer, ByVal destY As Integer, ByVal op As Integer) As Integer
    Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC As Integer) As Integer
    Private Declare Function DeleteObject Lib "GDI32" (ByVal hObj As Integer) As Integer
    Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Integer) As Integer
    Const SRCCOPY As Integer = &HCC0020

    Public Sub pmjt()
        Dim bmp As Bitmap
        Dim hDC, hMDC As Integer
        Dim hBMP, hBMPOld As Integer
        hDC = GetDC(0)
        hMDC = CreateCompatibleDC(hDC)
        hBMP = CreateCompatibleBitmap(hDC, Me.Width, Me.Height)
        hBMPOld = SelectObject(hMDC, hBMP)
        BitBlt(hMDC, 0, 0, Me.Width, Me.Height, hDC, Me.Left, Me.Top, SRCCOPY)
        hBMP = SelectObject(hMDC, hBMPOld)
        bmp = Image.FromHbitmap(New IntPtr(hBMP))
        DeleteDC(hDC)
        DeleteDC(hMDC)
        DeleteObject(hBMP)
        Dim ofd As New SaveFileDialog
        ofd.Filter = "jpg file |*.jpg |bmp file |*.bmp"
        If ofd.ShowDialog = DialogResult.OK Then
            bmp.Save(ofd.FileName)
        End If
    End Sub
--------------------编程问答-------------------- 请问LS的GetDC是自定义的还是用Win32的API的那个。。。? --------------------编程问答-------------------- Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Integer) As Integer

引用 2 楼 Whnight 的回复:
请问LS的GetDC是自定义的还是用Win32的API的那个。。。?
--------------------编程问答-------------------- 你好,
    我的意思可能沒有講清楚,是這樣的:當一個Form的高度大於屏幕高度時,此時form上的控件比如textbox框由於超出屏幕顯示範圍,就不可見

--------------------编程问答-------------------- getdc(0)好像取得是當前屏幕的dc,我現在想去不可見部份的控件,存成圖片,謝謝!!
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,