以前曾利用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);

  

WinCE5.0中应用程序如何直接写屏相关推荐

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

    在实际开发过程中,经常希望能在应用程序中直接读写设备的物理空间.以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求.但这种方式有一个明显的缺陷,每次读写都必须经由它才能 ...

  2. 在WINCE5.0中应用CMD(比如运行PING命令)

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  3. 总结——在CCS5.5.0中如何将代码烧写到DSP28335的Flash中

    本文转载连接: https://blog.csdn.net/GSH_Hello_World/article/details/52187882 把一个原来是烧写到DSP的片内RAM的程序修改成是烧写到D ...

  4. 【论文写作】客户端设计与实现中模块程序实现如何写

    4.1模块的程序实现 4.3.1 连接管理的程序实现 在用户打开软件后进入主窗体(MFFTP.cs),在连接服务器输入框中输入IP地址.用户名及密码后.先发送IP地址和端口号到服务器,然后对其应答分析 ...

  5. WINCE5.0和WINCE6.0的内存与系统架构

    WINCE5.0和WINCE6.0的内存与系统架构 http://topic.csdn.net/u/20090410/14/75bba2cb-cefc-4ca5-b4f5-4165bbf16006.h ...

  6. 在WinCE5.0和WinCE6.0下,编译选项介绍

    作者:ARM-WinCE 在WinCE5.0中,在"Build OS"菜单中,我们会看到不同的编译选项: "Sysgen","Build and Sy ...

  7. 在WINCE5.0开始菜单中添加应用程序

    首先这篇文章主要参考http://blog.csdn.net/nanjianhui/archive/2009/07/01/4313044.aspx来写的,主要是想深入理解和自己实践一下. 在WinCE ...

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

    一.综述 HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode.DataNode.DFSClient等众多角色的分工与合作. 首先上一段代码,客户端是如何写文件的: ...

  9. c语言vi运行编译文件,VC++6.0中如何编译运行及调试C语言程序文件.docx

    VC++6. 0中如何编译运行调试C语言程序 1?启动VC++6. 0 (如下图) [5>R?*16 00 P"! tptl tub go□賦星糸理技件□中出融Fz " 口仍 ...

最新文章

  1. 推荐系统(5)—隐语义模型(LFM)
  2. 还珠格格里的尔泰,重现娱乐圈
  3. vue/cli 3.0 与 2.0脚手架怎样mock数据
  4. Origin进行多元线性回归、指数拟合和非线性曲面拟合
  5. Ansible PLaybook template 模板详解
  6. LOL手游锤石上线吓坏玩家?英雄设计被吐槽,玩家:还我端游锤石
  7. .NET 3.5 - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除
  8. ES6 Map和Set的用法笔记
  9. 小学学校计算机教室使用计划,小学电脑室工作计划
  10. AMD规范(RequireJS)、CMD规范(SeaJS)、CommonJS(BravoJS)规范的辨析
  11. vue3 src/main.js文件配置
  12. 存储过程返回结果集_PostgreSQL函数返回结果集
  13. 感谢你遇到的问题(2)
  14. 数据分析-数据平滑处理
  15. 虚拟机无法服务器系统安装win7系统,如何解决虚拟机安装Win7系统失败的问题
  16. 离散数学知识点总结(3):等值演算,16个命题定律 / 基础等价式,重言式的替换规则,证明有效性和可满足性的方法
  17. 五招防止QQ密码被盗
  18. 网易云课程:深度学习与PyTorch入门实战
  19. 计算机底层01-计算机发展史
  20. SwiftUI 中为什么应该经常用子视图替换父视图中的大段内容?

热门文章

  1. java smtp 内嵌图片,SMTP 发送内嵌图片 邮件
  2. [Java工程师面试精选]Redis cluster集群模式的原理
  3. jQuery 变量数字相加
  4. base64是哪个jar包的_如何通过一个类名找到它属于哪个jar包?
  5. 吉大c 语言程序设计奥鹏作业,吉大20春学期《可编程控制器》在线作业一百分...
  6. LNMP环境搭建(二)集成Nginx与PHP
  7. bat脚本交互输入_基于winserver操作系统的自动清理Oracle3天前归档日志脚本分享...
  8. python 利用jieba读取txt文本进行分词后存入新txt
  9. gram矩阵_ZEN-基于N-gram的中文Encoder
  10. android tab 悬停效果代码,Android 仿腾讯应用宝 之 Toolbar +Scroolview +tab滑动悬停效果...