解决方案 »

  1.   

    HBITMAP CMyQQDlg::CopyScreenToBitmap()
    {
    CRect rect(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
    HDC hScrDC,hMemDC; // 屏幕和内存设备描述表
    HBITMAP hBitmap, hOldBitmap;// 位图句柄
    int xScrn, yScrn; // 屏幕分辨率
    hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL); //为屏幕创建设备描述表
    hMemDC = CreateCompatibleDC(hScrDC);//为屏幕设备描述表创建兼容的内存设备描述表
    xScrn = GetDeviceCaps(hScrDC, HORZRES);// 获得屏幕分辨率
    yScrn = GetDeviceCaps(hScrDC, VERTRES);
    hBitmap = CreateCompatibleBitmap(hScrDC, rect.Width(), rect.Height());// 创建一个与屏幕设备描述表兼容的位图
    hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap);// 把新位图选到内存设备描述表中
    BitBlt(hMemDC, 0, 0, rect.Width(), rect.Height(),hScrDC,rect.left,rect.top, SRCCOPY);// 把屏幕设备描述表拷贝到内存设备描述表中
    hBitmap =(HBITMAP)SelectObject(hMemDC, hOldBitmap);//得到屏幕位图的句柄
    DeleteDC(hScrDC);//清除 
    DeleteDC(hMemDC);
    return hBitmap;// 返回位图句柄
    }
    抓屏