如果用通常的抓屏方法只能抓到最顶层的窗体,如果把窗体在最底层显示就无法抓到,有什么方法可以把底层的窗体抓取成图像,并在一个最上层的窗体上显示出来,(把两个窗体都设定成全屏显示)底层的窗体有多个控件运行,上层窗体要即时显示底层窗体的即时图片.

解决方案 »

  1.   

    使用XP以上系统才有的PrintWindow函数
      

  2.   

    抓图是根据DC操作的,只要用底层窗口的HDC就可以了么。
      

  3.   

    你抓屏的时候先把顶层的窗口hide掉,然后再抓不行么
      

  4.   

    //你抓屏的时候先把顶层的窗口hide掉,然后再抓不行么就是这个意思
      

  5.   

    不能把顶层窗体HIDE掉,要它一直显示,底层窗口也不能显在顶层.(就是要底层的窗体运行,然后顶层窗口即时显示)
      

  6.   

    '这是代码
    Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PrintWindow Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, ByVal nFlags As Long) As LongPrivate Sub Form_Load()
        Shell "calc.exe", vbNormalFocus
    End SubPrivate Sub Timer1_Timer()
        Dim lngHwnd As Long
        lngHwnd = FindWindow(vbNullString, "计算器")
        PrintWindow lngHwnd, Me.hdc, 0'只要该lngHwnd可见,就可Print出来
    End Sub
      

  7.   

    PrintWindow 这个函数好像在WIN2000与98里没有吧
      

  8.   

    似乎不置顶就没办法,我再想想看,好象抓的hdc是从desktop上面一整个DIB上拷贝的。
      

  9.   

    先将要被抓图的窗体置顶,抓图,再hide就行了!
      

  10.   

    用PrintWindow来抓取倒是可以实现,就是要在XP环境里才,但不知道怎样实现把那个窗口旋转一个角度呀?
      

  11.   

    PrintWindow抓到的窗口能旋转180度显示吗?