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

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

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

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

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
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);
3 
4      ::SetWindowPos( this -> m_hWnd,HWND_TOPMOST, 0 , 0 ,dwWidth,dwHeight,WS_EX_TOPMOST);

 

 

  

目录
相关文章
|
Windows
Qt-Windows下发布应用程序
QtWindows下发布应用程序
105 0
WinCE系统启动时自动运行应用程序之二
Windows CE 4.2平台下创建工程SMDK2440(目录为C:/WINCE420/PUBLIC/SMDK2440)且Build(或者Rebuild)成功;假定需要自动运行的的应用程序为CEDEMO.exe
|
API 开发工具 开发者
WinCE应用程序的开发
WinCE应用程序的开发是WinCE开发中很重要的一个环节。本文将简单介绍一些WinCE应用程序开发的基本概念。     先说开发工具,目前用得比较多的开发工具有EVC4(SP4)、VS2005、VS2008和Platform Builder。
1194 0
|
Android开发 虚拟化 开发者
Windows 11 运行安卓子系统
win11系统最新更新引入了安卓子系统,不需要模拟器就能运行安卓程序, 这对开发者和普通用户来说都是不错的功能,甚至很多开发者都为了这个功能开始升级win11。
|
NoSQL Ubuntu Linux
gdbserver远程调试嵌入式linux应用程序方法
此处所讲的是基于gdb和gdbsever的远程调试方法。环境为:PC机:win7、虚拟机:10.04、下位机:飞嵌TE2440开发板。   嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行。
1331 0
WinCE项目应用汇总
虚拟仪器(VI)                       RM905a+医用放射性核素活度计 RM905a+活度计远程检定方法研究  车载导航
1128 0
如何让WIN32应用程序支持MFC类库
参考链接:http://wenku.baidu.com/view/68fc340c79563c1ec5da714b.html
662 0
|
Windows
解决“不是有效的win32应用程序”问题
解决“不是有效的win32应用程序”问题 帅宏军 用VC2013编译了一个程序,在Windows 8、Windows 7(64位、32位)下都能正常运行。
2482 0
|
Windows
Directx11教程(3) 一个最基本D3D应用程序(1)
在前一篇教程程序代码的基础上,这次我们将增加2个类: InputClass,键盘处理的代码将放在这个类里面,GraphicsClass类,D3D渲染的代码放在这个类里,这两个类都是SystemClass类的成员变量,SystemClass类中会调用这2个类实例的初始化、渲染以及shutdown函数。
989 0