`

WinCE 截屏 - C++ 代碼

    博客分类:
  • C++
 
阅读更多
// this function create a bmp file to save the current screen;
// supported eVC++ 4.0 (wince 4.0) and vc++ 6.0 , test pass; 
void CSnapDlg::OnScreenSave(const char *filename)
{ 
    HDC  hScrDC, hMemDC;         
    int  width, height; 
 
 //the pointer will save all pixel point's color value
 BYTE  *lpBitmapBits = NULL; 
        
 //creates a device context for the screen device
    hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);

  //get the screen point size
    width = GetDeviceCaps(hScrDC, HORZRES);
    height = GetDeviceCaps(hScrDC, VERTRES);

    //creates a memory device context (DC) compatible with the screen device(hScrDC)  
    hMemDC = CreateCompatibleDC(hScrDC);

 //initialise the struct BITMAPINFO for the bimap infomation, 
 //in order to use the function CreateDIBSection
 // on wince os, each pixel stored by 24 bits(biBitCount=24) 
 //and no compressing(biCompression=0) 
    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;
   
  //use the function CreateDIBSection and SelectObject 
 //in order to get the bimap pointer : lpBitmapBits 
    HBITMAP directBmp = CreateDIBSection(hMemDC, (BITMAPINFO*)&RGB24BitsBITMAPINFO, 
       DIB_RGB_COLORS, (void **)&lpBitmapBits, NULL, 0);
 HGDIOBJ previousObject = SelectObject(hMemDC, directBmp);

 // copy the screen dc to the memory dc
 BitBlt(hMemDC, 0, 0, width, height, hScrDC, 0, 0, SRCCOPY);
 
 //if you only want to get the every pixel color value, 
 //you can begin here and the following part of this function will be unuseful;
 //the following part is in order to write file;

 //bimap file header in order to write bmp file 
 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)
 
 //write into file
 FILE *mStream = NULL;
 if((mStream = fopen(filename, "wb")))
 {  
  //write bitmap file header
  fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream);
  //write bitmap info
  fwrite(&(RGB24BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream);
  //write bitmap pixels data
  fwrite(lpBitmapBits, 3*width*height, 1, mStream);
   //close file
  fclose(mStream);
 }
 
 //delete
 DeleteObject(hMemDC);
 DeleteObject(hScrDC);
 DeleteObject(directBmp);
 DeleteObject(previousObject);
}
分享到:
评论

相关推荐

    wince下的截屏代码,在windows下也可以用

    由于代码也适用于Windows,这意味着开发者可能已经对原始的wince截屏代码进行了适配,使其能在更广泛使用的Windows桌面系统上运行。 标签“wince 截屏代码”明确了我们讨论的主题,即与Windows CE相关的截屏实现...

    wince+截图工具

    由于WinCE支持.NET Compact Framework,截图工具可能是一个基于.NET的小型应用程序,也可能是用C++或VB.NET等语言编写的原生代码。 使用这个工具时,用户可能需要了解一些基本的WinCE操作,如文件管理、程序安装和...

    wince6.0下的截屏程序

    7. **实际应用**:在WinCE 6.0的截屏程序中,`ScreenCut`可能是程序的主文件名,可能包含了实现上述功能的代码。这个程序可能会提供用户界面,允许用户触发截屏并选择保存路径。 8. **调试与测试**:由于WinCE是...

    wince下的截图程序源码

    标题 "wince下的截图程序源码" 涉及到的是在Windows CE(简称wince)操作系统环境下开发的一款截图工具的源代码。Windows CE是一种微软公司设计的嵌入式操作系统,广泛应用于移动设备、工业控制设备等。在这个项目中...

    wince下的自动截屏工具源码

    标题 "wince下的自动截屏工具源码" 暗示了这是一个专为Windows CE (wince) 平台设计的自动屏幕截图程序的源代码。Windows CE 是微软推出的一个实时操作系统,主要用于嵌入式设备,如掌上电脑、车载导航系统等。此...

    windows mobile/winCE全屏显示代码

    以下是一个简单的EVC全屏显示的C++代码片段: ```cpp #include LRESULT CMyApp::OnCreate(LPCREATESTRUCT lpCreateStruct) { //...其他代码... // 获取屏幕尺寸 int width = GetSystemMetrics(SM_CXSCREEN...

    基于WinCE的贪吃蛇

    这个项目的主要目的是让学生熟悉嵌入式系统开发环境,特别是针对WinCE操作系统和C++编程语言的运用。 **设计原理** 1. **软件设计** - **用户交互**:游戏使用试验箱数字键5、7、8、9来控制蛇的移动,这要求程序...

    WinCE下全屏运行的HelloCE示例程序

    "HelloCE"示例程序可能涵盖了上述部分或全部知识点,通过源代码分析,开发者可以学习到如何在WinCE系统上实现全屏应用的具体步骤和技术。它是一个很好的起点,帮助初学者理解和掌握WinCE平台的开发技巧。

    wince600_arm

    "prt_scrn"可能是“print screen”的缩写,即截图功能,而“ARMV4i”是ARM处理器的一种指令集架构,适用于一些早期的ARM处理器。 在Windows Embedded Compact 6.0的开发过程中,开发者可能需要这样的组件来处理屏幕...

    WINCE打开和保存BMP图片

    在Windows CE (WINCE)平台上开发应用程序时,处理图形图像是一项常见的任务。在这个场景中,我们专注于打开和保存BMP(Bitmap)图像文件。...通过学习和理解这段代码,你可以深入掌握在WINCE环境下处理BMP图像的方法。

    基于WinCE的屏幕截取和压缩传送

    PC机负责接收图像数据并进行显示,而WinCE设备则承担屏幕截图和图像数据压缩的任务。两者之间通过TCP/IP协议进行通信。 #### 屏幕截取方法 在WinCE环境下,屏幕截取可以通过多种方式实现,本文主要介绍利用WinCE...

    MFC截屏程序

    为了提高用户体验,截屏程序可能还包括选择区域、定时截图、预览等功能。这需要更复杂的GDI操作,例如使用`SetROP2`改变画笔模式进行矩形选择,或者使用线程来实现定时器。 总结来说,MFC截屏程序是一个结合了...

    EVC定时抓取屏幕小程序

    在Windows CE(简称Wince)操作系统环境下,开发一个EVC(Embedded Visual C++)定时抓取屏幕的小程序是一项实用的任务。这个小程序可以帮助用户定期捕获设备的屏幕快照,保存为图像文件,以便进行监控、分析或记录...

    mini2440用户手册

    友善之臂mini2440用户手册 第一章 Mini2440 开发板介绍...........................................................................................................................- 15 -  ...

Global site tag (gtag.js) - Google Analytics