zoukankan      html  css  js  c++  java
  • Wince6.0 截图函数,BMP格式

    void OnScreenSave()

    {

    HDC  hScrDC, hMemDC;         

        int  width, height; 

    BYTE  *lpBitmapBits = NULL; 

        hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);

        width = GetDeviceCaps(hScrDC, HORZRES);

        height = GetDeviceCaps(hScrDC, VERTRES);

        hMemDC = CreateCompatibleDC(hScrDC);

        BITMAPINFO RGB24BitsBITMAPINFO; 

        ZeroMemory(&RGB24BitsBITMAPINFO, sizeof(BITMAPINFO));

        RGB24BitsBITMAPINFO.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);

        RGB24BitsBITMAPINFO.bmiHeader.biWidth = width;

        RGB24BitsBITMAPINFO.bmiHeader.biHeight = height;

        RGB24BitsBITMAPINFO.bmiHeader.biPlanes = 1;

        RGB24BitsBITMAPINFO.bmiHeader.biBitCount = 24;

        HBITMAP directBmp = CreateDIBSection(hMemDC, (BITMAPINFO*)&RGB24BitsBITMAPINFO, 

    DIB_RGB_COLORS, (void **)&lpBitmapBits, NULL, 0);

    HGDIOBJ previousObject = SelectObject(hMemDC, directBmp);

    BitBlt(hMemDC, 0, 0, width, height, hScrDC, 0, 0, SRCCOPY);

    BITMAPFILEHEADER bmBITMAPFILEHEADER;

    ZeroMemory(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER));

    bmBITMAPFILEHEADER.bfType = 0x4d42;  //bmp  

        bmBITMAPFILEHEADER.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

        bmBITMAPFILEHEADER.bfSize = bmBITMAPFILEHEADER.bfOffBits + ((width*height)*3); ///3=(24 / 8)

    char g_chPhotoPathName[50];

    char g_chPhotoName[30];

    FILE *mStream = NULL;

    COleDateTime tmTime = COleDateTime::GetCurrentTime();

    sprintf(g_chPhotoName, "%d%d%d%d%d%d.bmp", tmTime.GetYear(), tmTime.GetMonth(), tmTime.GetDay(),tmTime.GetHour(),tmTime.GetMinute(),tmTime.GetSecond());

    sprintf(g_chPhotoPathName, "//NAND//screen//%s", g_chPhotoName);

    CreateDirectory(_T("//NAND//screen"), NULL);

    if((mStream = fopen(g_chPhotoPathName,"wb")))

    {  

    fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream);

    fwrite(&(RGB24BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream);

    fwrite(lpBitmapBits, 3*width*height, 1, mStream);

    fclose(mStream);

    }

    else

    {

    MessageBox(NULL,_T("创建图像文件失败"),_T("错误"),MB_OK);

    return;

    }

    //delete

    DeleteObject(hMemDC);

    DeleteObject(hScrDC);

    DeleteObject(directBmp);

    DeleteObject(previousObject);

    }

  • 相关阅读:
    LeetCode 88. Merge Sorted Array
    LeetCode 75. Sort Colors
    LeetCode 581. Shortest Unsorted Continuous Subarray
    LeetCode 20. Valid Parentheses
    LeetCode 53. Maximum Subarray
    LeetCode 461. Hamming Distance
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 976. Largest Perimeter Triangle
    LeetCode 1295. Find Numbers with Even Number of Digits
    如何自学并且系统学习计算机网络?(知乎问答)
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171490.html
Copyright © 2011-2022 走看看