WinCE5.0中应用程序如何直接写屏

  以前曾利用GAPI实现应用程序直接操作显示驱动的FrameBuffer,以提高屏幕绘图和视频播放的效率。GAPI依赖于显示驱动,必须在显示驱动中添加相应的接口才能正常使用。如果平台是我们自己定制的,在WinCE5.0中,我们也可以通过另外一种方法来操作FrameBuffer。

  以DeviceEmulator为例,我们已经知道FrameBuffer的物理地址是0x30100000,大小为0x100000。那么在应用程序中可以通过如下代码,直接获取操作FrameBuffer的机会。

代码

1     char *gpLCDBuf;
2     gpLCDBuf = (char*)VirtualAlloc(NULL,0x100000,MEM_RESERVE,PAGE_NOACCESS);
3     VirtualCopy(gpLCDBuf, (void *)(0x30100000/256), 0x100000, PAGE_READWRITE | PAGE_PHYSICAL | PAGE_NOCACHE);
4     memset(gpLCDBuf,0xFF,0x100000);    
5     VirtualFree(gpLCDBuf,0,MEM_RELEASE);

    以上示例代码是将屏幕刷白,当然也可以将它刷黑,或者其他纯色,这样便可以做一个WinCE5.0下测试LCD的小工具了。

  在编译以上代码时,需要包括头文件pkfuncs.h。编译时还可能会出现如下错误,

  C:\WINCE600\PUBLIC\COMMON\OAK\INC\pkfuncs.h(1042) : error C2065: 'REG_TYPE' : undeclared identifier

  简单的处理方法就是在代码中添加一个宏定义,如下,

  #define REG_TYPE DWORD

  对话框的全屏显示,可以通过如下代码实现,  

1     DWORD dwWidth = GetSystemMetrics(SM_CXSCREEN);
2     DWORD dwHeight = GetSystemMetrics(SM_CYSCREEN);

4     ::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,dwWidth,dwHeight,WS_EX_TOPMOST);

 

 

  

时间: 2024-10-26 12:39:34

WinCE5.0中应用程序如何直接写屏的相关文章

WinCE6.0中应用程序如何直接访问物理空间

   在实际开发过程中,经常希望能在应用程序中直接读写设备的物理空间.以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求.但这种方式有一个明显的缺陷,每次读写都必须经由它才能完成.如果只是读取GPIO,那问题不算大.如果想通过这种方式实现视频播放的加速就比较困难了.估计非但不能加速,反而会变得更慢.      早先曾与ZL仔细的讨论过这个问题,他当时在WinCE6.0上移植TCPMP,发现播放视频不太流畅,于是想通过直接写显存进行加速.目的很明确,在应用中申请一段

VC中通过程序向RichEditView写文本

在建立SDI或MDI程序时,如果选择了RichEditView,就可以利用RichEdit提供的丰富的格式,但是如何通过程序在RichEditView中写入文本却是一个问题,下文就介绍了如何实现用程序在RichEditView中写文本. 一.在文本末尾写文字 void CRichEditUseDoc::OnTextWriteafter() { CString str; int nTextLength; CRichEditView *pView = GetView(); CRichEditCtrl

WinCE6.0中托管代码如何访问物理空间

      之前整理过一篇<WinCE6.0中应用程序如何直接访问物理空间>的短文,文中介绍的方法突破了WinCE6.0系统本身的限制,使应用程序能够直接读写指定的内存地址,如访问系统显存.在WinCE中,使用托管代码编写应用程序直接访问物理空间,之前也曾简单介绍过,当时是基于VB.NET实现的,请参考<WinCE下VB.NET程序的开发>.今天再凑一篇基于C#的.       原理之前两篇都已经讲过了,这里不再赘述.实现方法与VB.NET类似,首先用C++编写一个动态链接库,实现

ASP.NET2.0中创建基于XML应用程序

XML是目前在Web上应用很普遍的一项技术,而在.NET 2.0中,则提供了更为丰富的功能,使得在创建XML应用的时候更加得心应手.在本文中,将简单以一个例子来说明,.NET 2.0在创建XML应用时的一些新特性. 首先,我们平常在创建Web应用时,都会选择以数据库的形式来存贮数据的,但如果要以纯XML来存贮数据的话,那的确会是种挑战.在.NET 1.0/1.1框架中,对XML的支持功能有限,比如对同一应用中的多个XML文件的支持.在.NET 2.0中,这种情况得到了改变,增加了新的功能,比如:

ASP.NET 2.0中创建基于XML的应用程序

XML是目前在Web上应用很普遍的一项技术,而在.NET 2.0中,则提供了更为丰富的功能,使得在创建XML应用的时候更加得心应手.在本文中,将简单以一个例子来说明,.NET 2.0在创建XML应用时的一些新特性. 首先,我们平常在创建Web应用时,都会选择以数据库的形式来存贮数据的,但如果要以纯XML来存贮数据的话,那的确会是种挑战.在.NET 1.0/1.1框架中,对XML的支持功能有限,比如对同一应用中的多个XML文件的支持.在.NET 2.0中,这种情况得到了改变,增加了新的功能,比如:

ASP.NET 2.0中WEB应用程序的部署

在我们建立完一个WEB应用程序后,我们就要考虑如何进行部署和发布.一般 情况下,尽可能将安装简单化,以使用户有非常好的用户体验.但有的情况下, 可能对安装程序的要求比较高,比如有时要将一些安装配置信息写到注册表中去 .而对于一个WEB应用程序,该如何安装部署呢?这和安装部署一个普通的 WINFORM下的应用程序有些不同.以往,对于WEB应用程序的安装部署总是十分困 难的,但自从ASP.NET 1.1起,直到现在出现的ASP.NET 2.0,安装部署WEB应用程 序将变得十分简单方便.本文将着重介

C++6.0语言中对话框程序用static画浮点数的波纹图

问题描述 C++6.0语言中对话框程序用static画浮点数的波纹图 MFC C++6.0语言中对话框程序用static画浮点数的波纹图的思路是什么?怎么同时能实现鼠标的操作动作 解决方案 参考:http://bbs.csdn.net/topics/390509580 有例子代码 解决方案二: 就是GDI绘图,绘图的范围是static控件的范围,能同时鼠标点击就要继承CStatic类来写一个子类,把绘图动作写在子类的OnPaint里,之后在主对话框中添加鼠标点击的消息来对绘图区域进行操作

Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)

一.综述       HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode.DataNode.DFSClient等众多角色的分工与合作.       首先上一段代码,客户端是如何写文件的: Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path file = new Path("demo.txt"); FSDataOutputStream

ASP.NET 2.0中保证应用程序的安全

asp.net|安全|程序 成员和角色管理器提供程序--现在ASP.NET 2.0包含了内建的成员和角色管理服务.由于这些服务都是提供程序驱动的(provider-driven),你可以轻易地变更它,或者用自定义实现来代替它. 登录控件--新的登录控件为站点的基于认证和授权的UI(例如登录窗体.创建用户窗体.密码取回.已登录用户或角色的定制UI)提供了基本模块.这些控件利用ASP.NET 2.0中的内建的成员和角色服务与站点所定义的用户和角色信息交互操作. 大多数Web应用程序的一个重要的部分是