定制WinCE系统的屏幕校准界面

news/2024/10/22 2:39:37/
在实际应用中,经常需要定制WinCE系统的屏幕校准界面。最常见的需求就是根据系统的语言设置校准界面。要实现这个功能,大概有两种方法,一是自己实现校准程序,完全取代WinCE系统的校准界面,第二种是修改WinCE系统自带的校准界面。相比之下,第二种方法较为简便,而这部分的代码是公开的,也有实现的可能。下面就简单介绍一下修改WinCE自带校准界面的方法。
1.备份目录C:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\CALIBRUI下的CalibrUi.cpp文件;
2.修改CalibrUi.cpp文件;
3.在VS2005的解决方案资源管理器中浏览到C:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\CALIBRUI,选中CALIBRUI,点击右键,在弹出菜单中选择Rebuild;
4.打开工程目录下的Wince600\PLATFORM_ARMV4I\cesysgen\oak\target\ARMV4I\retail目录,注意其中PLATFORM_ARMV4I随BSP不同而异;
5.在VS2005的菜单中选择“生成”——“Advanced Build Commands”——“Sysgen”菜单;
6.监视Wince600\PLATFORM_ARMV4I\cesysgen\oak\target\ARMV4I\retail目录下的gwes.dll文件,如果gwes.dll被更新了,选择“生成”——“取消”菜单,结束Sysgen,监视是人工的,做这一步主要是节省编译的时间,而不必重新Sysgen整个工程;
7.将刚刚生成的gwes.dll文件拷贝至工程目录下的RelDir\PLATFORM_ARMV4I_Release下,替换原来的gwes.dll文件,其中PLATFORM_ARMV4I_Release随BSP不同而异;
8.点击VS2005的“生成”——“Make Run-Time Image”菜单,使用新的gwes.dll,生成新的NK;
9.固化新生成的NK,并进入校准界面进行测试。

下面以定制界面语言为例,简单介绍一下实现的关键代码及步骤。首先将各个语言包编译成单独的DLL。在TouchCalibrateUI_Initialize()中根据系统语言加载特定的语言包,并替代系统默认加载的资源句柄,参考代码如下。
1 hInstRes = LoadLibrary(szLanResFile);
2 if (hInstRes)
3 {
4 s_hinst = hInstRes;
5 }

其中szLanResFile是根据系统语言选择的校准界面的资源包。对于大多数语言来说,这就可以正常使用了。但对于日文、韩文和繁体中文来说,由于WinCE系统没有自带对应的字体,在修改后可能会出现一些乱码,如□□,所以还需要添加有关字体的代码。参考代码如下。
1 AddFontResource(szFontFile);
2
3 LOGFONT lf;
4 memset(&lf, 0, sizeof(LOGFONT));
5 wcscpy(lf.lfFaceName,szFaceName);// 初始化字体名称
6 lf.lfHeight = lfHeight; // 设置字体的高度
7 hFont = CreateFontIndirect(&lf); // 创建字体
8
9 // 使用创建的字体
10 if (hFont)
11 {
12 hFontOld = (HFONT)SelectObject(hdc,hFont);
13 }

除了动态修改语言之外,还可以修改背景颜色和字体的颜色。参考代码如下。
1 hBrush = CreateSolidBrush(dwBKColor);
2 if (hBrush)
3 {
4 hOldBrush = (HBRUSH)SelectObject(hdc,hBrush);
5 }
6
7 hPen = CreatePen(PS_SOLID,0,dwBKColor);
8 if (hPen)
9 {
10 hOldPen = (HPEN)SelectObject(hdc,hPen);
11 }
12
13 SetBkMode(hdc,TRANSPARENT);
14 SetTextColor(hdc,dwTxtColor);
15
16 ...
17
18 if (hBrush)
19 {
20 SelectObject(hdc,hOldBrush);
21 DeleteObject(hBrush);
22 }
23
24 if (hPen)
25 {
26 SelectObject(hdc,hOldPen);
27 DeleteObject(hPen);
28 }

以上所用到的字体和颜色的信息可以存储在注册表或者文件中,在触摸屏校准界面初始化时取得。

http://www.ppmy.cn/news/430954.html

相关文章

科学计算机怎么调颜色,Win7旗舰版如何进行屏幕颜色校准

屏幕上看到的颜色将会取决于计算机显屏幕、显卡设置以及外部照明等因素,大多数用户都使用相同的默认Win7旗舰版 颜色配置文件。而现在Win7旗舰版提供了一个显示颜色校准向导,可以帮助您正确设置您的亮度、对比度和色彩设置。 通过此工具你可以调整伽马、…

wm屏幕校准

wince的cordll提供了屏幕校准的函数,使用方法与钩子函数类似,强制加载dll,获取地址,然后用函数指针调用。 typedef BOOL (WINAPI *_TouchCalibrate)(); HINSTANCE hinstance LoadLibrary(_T("coredll.dll")); if (hins…

wince下屏幕校准和修改介绍

以6410开发板为例。 一、确定X,Y是否镜像:在屏幕上任意拖动出一个矩形虚线框,然后随意上下左右拖动,这时看虚框是否根随触摸笔移动,如果虚线框能跟随触摸笔动,说明X,X-,Y&#xff0c…

Android屏幕校准的apk应用实现

紧跟着上一篇博文,在android内核中实现屏幕校准,这一篇博文主要做的便是将可执行文件ts_calibrate移植成android的apk应用。现在我们已经知道,ts_calibrate就是取了触摸屏 5个点的坐标,然后与对应的显示屏的点坐标联立方程&#x…

Debian/ubuntu 显示屏幕校准

//转载: https://www.cnblogs.com/yongpan/p/7846531.html ubuntu多显示器单触摸屏校准 多显示器单触摸屏屏幕校准 https://www.freedesktop.org/wiki/Software/xinput_calibrator/ 0、触摸屏重定向 sudo xinput map-to-output 13 DP1 #将触摸屏映射到指定的显…

Android系统 屏幕最低背光亮度值/最高背光亮度值 调试

通过 adb 确认合适的 最低背光亮度值/最高背光亮度值 参数 , 并使用万用表量测 背光IC的反馈电阻输出电压确认,具体计算方式根据 背光IC 贴的反馈电阻来计算。(可以找硬件协助 一般是 1.35 / 1.1) adb shell Dslide_1020Pro:/ $ su Dslide_10…

iqoo手机计算机背景变白,更精准的色彩显示,出厂屏幕校准的手机大合集

如今,手机的屏幕越来越得到重视,不仅仅提现在屏幕刷新率方面,人们对于屏幕的色准的需求也不断提高。手机厂商也看到了这方面的需求,在一些产品出厂时,就做了色准调校。不过这样的产品也有不少呢,不妨看看下…

linux系统屏幕触摸校准

1、安装工具 xinput-calibrator工具:sudo apt-get install xinput-calibrator xinput工具:sudo apt-get insatll xinput 2、校准实例 (1)查看触摸设备id:xinput_calibrator --list 上面可知:device nam…