• 屏幕截图代码


    //截图

    INT CAnimationHelper::_GetScreenShotData( HWND hWnd, LPRECT rcShot, BYTE ** ppBuf ) {  //截图  HDC hDcWnd = NULL;  if (hWnd)  {   hDcWnd = ::GetDC(hWnd);  }  else  {   HWND hWndDesk = ::GetDesktopWindow();   hDcWnd = ::GetDC(hWndDesk);  }  WORD nBitPerPixel = (WORD)::GetDeviceCaps(hDcWnd, BITSPIXEL);  INT nWidth = rcShot->right-rcShot->left;  INT nHeight = rcShot->bottom-rcShot->top;  INT nOffset = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);  DWORD dwSize = nBitPerPixel*nWidth*nHeight + nOffset;  *ppBuf = new BYTE[dwSize];  HDC hDcMem = ::CreateCompatibleDC(hDcWnd);  HBITMAP hBmpMem = ::CreateCompatibleBitmap(hDcWnd, nWidth, nHeight);  HBITMAP hBmpOld = (HBITMAP)::SelectObject(hDcMem, hBmpMem);  ::BitBlt(hDcMem, 0, 0, nWidth, nHeight, hDcWnd, rcShot->left, rcShot->top, SRCCOPY);

     BITMAPINFO bih = {0};  bih.bmiHeader.biBitCount = nBitPerPixel;  bih.bmiHeader.biCompression = BI_RGB;  bih.bmiHeader.biHeight = nHeight;  bih.bmiHeader.biPlanes = 1;  bih.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);  bih.bmiHeader.biSizeImage = nBitPerPixel*nWidth*nHeight;  bih.bmiHeader.biWidth = nWidth;

     BITMAPFILEHEADER bfh = {0};  bfh.bfOffBits = nOffset;  bfh.bfSize = dwSize;  bfh.bfType = (WORD)0x4d42;

     memcpy(*ppBuf, &bfh, sizeof(BITMAPFILEHEADER));  memcpy((*ppBuf)+sizeof(BITMAPFILEHEADER), &bih.bmiHeader, sizeof(BITMAPINFOHEADER));

     ::GetDIBits(hDcMem, hBmpMem, 0, nHeight, (*ppBuf)+nOffset, &bih, DIB_RGB_COLORS);

     if (nBitPerPixel==32)  {   BYTE *pData = (*ppBuf)+nOffset+3;   for (INT i=0; i<nHeight; i++)   {    for (INT j = 0; j<nWidth; j++)    {     *pData = 0xFF;     pData += 4;    }   }  } 

     //for test //  FILE *fp = _wfopen(L"E:\\a.bmp", L"w+b"); //  fwrite(*ppBuf, 1, dwSize, fp);//写入位图数据 //  fclose(fp);

     ::SelectObject(hDcMem, hBmpOld);  ::DeleteObject(hBmpMem);  ::DeleteObject(hDcMem);  ::ReleaseDC(hWnd,hDcWnd);

     return dwSize; }

  • 相关阅读:
    P6329 【模板】点分树 | 震波
    Luogu P3350 [ZJOI2016]旅行者
    Luogu [ZJOI2015]幻想乡战略游戏
    斐波那契数列简单性质
    Luogu P2056 [ZJOI2007]捉迷藏
    Luogu P4127 [AHOI2009]同类分布
    A funny story in regard to a linux newbie
    Inside the c++ object module 阅读摘要
    java并发编程
    JVM执行引擎总结(读《深入理解JVM》) 早期编译优化 DCE for java
  • 原文地址:https://www.cnblogs.com/dwjaissk/p/2804250.html
Copyright © 2020-2023  润新知