Windows Mobile下快速截屏的一种方法

简介: WinCE下截屏的方法有很多种,这里介绍一种利用GAPI实现的方法。GAPI是Game API的缩写,它提供了一系列函数,可以直接对屏幕缓冲区进行读/写访问。虽然现在逐渐被DirectX Mobile取代,但自从2000年首次应用在PPC上后,几乎所有的移动设备上都能看见它。

    WinCE下截屏的方法有很多种,这里介绍一种利用GAPI实现的方法。GAPI是Game API的缩写,它提供了一系列函数,可以直接对屏幕缓冲区进行读/写访问。虽然现在逐渐被DirectX Mobile取代,但自从2000年首次应用在PPC上后,几乎所有的移动设备上都能看见它。GAPI主要应用于游戏开发,但也不仅限于此。下面就介绍一种在WM下如何利用GAPI快速截取屏幕的方法。

 1        struct  {
 2            BITMAPINFOHEADER bmih;
 3            RGBQUAD rgq[ 256 ];
 4       } bmi;
 5       BYTE  * pLCDBuffer  =  NULL;
 6       BITMAPFILEHEADER bmfHdr;
 7       HANDLE hFile;
 8       DWORD dwWritten;
 9       DWORD dwFrameBufferSize;
10       
11       GXOpenDisplay(NULL, NULL);
12       g_DisplayProperties  =  GXGetDisplayProperties();
13       pLCDBuffer  =  (PBYTE)GXBeginDraw();
14       dwFrameBufferSize  =  g_DisplayProperties.cxWidth * g_DisplayProperties.cyHeight * (g_DisplayProperties.cBPP >> 3 );
15   
16       ZeroMemory( & bmi,  sizeof (bmi));
17       bmi.bmih.biSize  =   sizeof (BITMAPINFOHEADER);
18       bmi.bmih.biWidth  =  g_DisplayProperties.cxWidth;
19       bmi.bmih.biHeight  =   - g_DisplayProperties.cyHeight;
20       bmi.bmih.biPlanes  =   1 ;
21       bmi.bmih.biBitCount  =  (WORD)g_DisplayProperties.cBPP;
22       bmi.bmih.biCompression  =  BI_BITFIELDS;
23        * (DWORD  * )( & bmi.rgq[ 0 ])  =   0xF800 ;
24        * (DWORD  * )( & bmi.rgq[ 1 ])  =   0x07E0 ;
25        * (DWORD  * )( & bmi.rgq[ 2 ])  =   0x001F ;
26   
27       ZeroMemory( & bmfHdr,  sizeof (BITMAPFILEHEADER));
28       bmfHdr.bfType  =   0x4d42 ;
29       bmfHdr.bfOffBits  =   sizeof (BITMAPFILEHEADER)  +   sizeof (BITMAPINFOHEADER)  +   sizeof (DWORD) * 3 ;
30       bmfHdr.bfSize  =  bmfHdr.bfOffBits  +  dwFrameBufferSize;
31   
32       hFile  =  CreateFile(_T( " \\1.bmp " ), GENERIC_WRITE,  0 , NULL, CREATE_ALWAYS,NULL, NULL);
33        if  (INVALID_HANDLE_VALUE  !=  hFile)
34       {
35           WriteFile(hFile, (LPSTR) & bmfHdr,  sizeof (BITMAPFILEHEADER),  & dwWritten, NULL);
36           WriteFile(hFile, (LPSTR) & (bmi.bmih),  sizeof (BITMAPINFOHEADER)  +   sizeof (DWORD) * 3 & dwWritten, NULL);
37           WriteFile(hFile, (LPSTR)pLCDBuffer, dwFrameBufferSize,  & dwWritten, NULL);
38           CloseHandle(hFile);
39       }
40      
41       GXEndDraw();
42       GXCloseDisplay();

 

 

目录
相关文章
|
4月前
|
安全 Windows
windows11 永久关闭windows defender的方法
windows11 永久关闭windows defender的方法
363 2
|
4月前
|
Ubuntu Linux Windows
两种Ubuntu和Windows互相共享文件夹的方法
两种Ubuntu和Windows互相共享文件夹的方法
|
3天前
|
网络协议 Windows
电脑ip在哪里查看?windows系统查看ip地址的8种方法
在Windows系统中,有多种方法可以查看电脑的IP地址。
|
12天前
|
Windows
Windows 程序自启动实现方法详解
Windows 程序自启动实现方法详解
28 0
|
2月前
|
安全 Windows
关闭Windows自动更新的6种方法
关闭Windows自动更新的6种方法
206 0
|
3月前
|
Windows
不让Windows显示语言栏“中”“英”字符的一种方法
【2月更文挑战第6天】本文介绍在Windows 11操作系统中,将任务栏右下角的语言栏的“中”、“英”标识加以隐藏、消除的一种或许可行的方法~
不让Windows显示语言栏“中”“英”字符的一种方法
|
5月前
|
定位技术 Windows
Windows电脑删除文件时确认是否删除文件的提示对话框的取消显示方法
Windows电脑删除文件时确认是否删除文件的提示对话框的取消显示方法
|
5月前
|
安全 Windows
Windows 10 用户变量、系统变量等环境变量新建、编辑修改与删除方法
Windows 10 用户变量、系统变量等环境变量新建、编辑修改与删除方法
|
5月前
|
Unix Linux Shell
【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
66 0
|
5月前
|
存储 Windows
下载Windows ISO镜像的方法
一、镜像介绍 1、大概介绍 .iso 是电脑上镜像的存储格式之一,所以通常在电脑中以后缀.iso命名,俗称iso镜像文件。 2、详细介绍 ISO镜像文件_百度百科 二、下载Windows 11镜像 1、Windows 11 官方下载网址 https://www.microsoft.com/zh-cn/software-download/windows11 2、步骤 点击官网地址,进入windows11官网,找到下载 Windows 11 磁盘映像 (ISO)
666 0