CDC *pDC;//屏幕DC pDC = CDC::FromHandle(::GetDC(NULL));//获取当前整个屏幕DC int BitPerPixel = pDC->GetDeviceCaps(BITSPIXEL);//获得颜色模式 int Width = pDC->GetDeviceCaps(HORZRES); int Height = pDC->GetDeviceCaps(VERTRES); CDC memDC;//内存DC memDC.CreateCompatibleDC(pDC); CBitmap memBitmap, *oldmemBitmap;//建立和屏幕兼容的bitmap memBitmap.CreateCompatibleBitmap(pDC, Width, Height); oldmemBitmap = memDC.SelectObject(&memBitmap);//将memBitmap选入内存DC memDC.BitBlt(0, 0, Width, Height, pDC, 0, 0, SRCCOPY);//复制屏幕图像到内存DC Bitmap bm(memBitmap, NULL/*(HPALETTE)cdc.GetCurrentPalette()->GetSafeHandle()*/); wchar_t buff[MAX_PATH] = {0}; wsprintf(buff, L"%s\\%04d.jpg", m_savePath.c_str(), nIndex); CLSID pngClsid; GetEncoderClsid(L"image/png", &pngClsid); bm.Save(buff, &pngClsid, NULL);