通过
HWND GetTopWindow(
  HWND hWnd   // handle to parent window
);
得到桌面句柄
再CREATE 一个MEMDC,再把上句柄的DC给BLT到MEMDC上,把这个MEMDC存成BMP。

解决方案 »

  1.   

        HWND hwnd=GetForegroundWindow();
    HDC hdc;
    hdc=GetDC(hwnd);
    找到程序的上下文然后 BitBlt( memoryDc, xStart, yStart, ptSize.x, ptSize.y, hdc,ptOrigin.x, ptOrigin.y, SRCCOPY); 就可以了
      

  2.   

    当然事先要给memoryDC一个合适大小的bitmap啦,HBITMAP hbitmap; hbitmap=CreateCompitableBitmap(hdc);
    old=SelectObject(hdc,hbitmap);
    ...
    最后用GetBitmap返回图像的信息。
      

  3.   

    如何用VC抓取屏幕图象并压缩HBITMAP GetScreenBmp()
    {
    HWND hwnd = ::GetDesktopWindow();
    HDC hsrc = ::GetDC(hwnd);
    HDC hmemdc = ::CreateCompatibleDC(hsrc);
    RECT rc; ::GetWindowRect(hwnd,&rc);
    SIZE sz;sz.cx=rc.right-rc.left;sz.cy=rc.bottom-rc.top;
    HBITMAP hbmp = ::CreateCompatibleBitmap(hsrc,sz.cx,sz.cy);
    HGDIOBJ holdbmp = ::SelectObject(hmemdc,hbmp);
    ::BitBlt(hmemdc,0,0,sz.cx,sz.cy,hsrc,rc.left,rc.top,SRCCOPY);
    ::SelectObject(hmemdc,holdbmp);
    ::DeleteObject(hmemdc);
    ::ReleaseDC(hwnd,hsrc);
    return hbmp;
    }