首页  ·  知识 ·  移动开发
WinCE桌面墙纸及图标更换
ARM-WinCE  http://blog.csdn.net/nanjianhui/archive/2009/06/19/4282613.aspx  Wphone  编辑:德仔   图片来源:网络
网上关于WinCE更换墙纸的文章一大堆,我也来写一篇,和网上已有的文章没什么区别。以前
网上关于WinCE更换墙纸的文章一大堆,我也来写一篇,和网上已有的文章没什么区别。以前写的WinCE Blog大部分都是BSP相关的,以后打算写点WinCE系统定制方面的,就从这里开始吧。
 
关于WinCE的墙纸,是在注册表中设置的,编译完WinCE工程以后,所有的reg文件中的内容都会被合并为reginit.ini文件。打开这个文件,可以找到如下内容:
[HKEY_CURRENT_USER\ControlPanel\Desktop]
            "wallpaper"=\\Windows\\WindowsCE.bmp
 
默认情况下,显示的是WindowsCE.bmp文件,但是被编译工程的release目录下并没有WindowsCE.bmp文件,倒是可以看到windowsce_qvgap.bmp和windowsce_vgal.bmp两个文件。这里需要看一下\WINCE600\public\shell\files\shell.bib文件中的定义就明白了。
 
说白了,更换墙纸就是改注册表设置。最简单的方法就是修改project.bib和project.reg文件。首先在project.bib文件中添加如下内容:
kungfuPanda.bmp   d:\WINCE600\OSDesigns\Emulator\Emulator\RelDir\DeviceEmulator_ARMV4I_Release\wall.bmp          NK  S
然后在project.reg文件添加如下内容:
[HKEY_CURRENT_USER\ControlPanel\Desktop]
            "wallpaper"="\\Windows\\kungfuPanda.bmp"
 
最后将这两个文件拷贝到工程编译的release目录下面,重新Makeimg就可以了。在WinCE启动以后,我们会看到墙纸已经被更换,同样还能看到桌面上的”My Device”和”Recycle Bin”,现在我想把他们的图标和名字也更换了,当然还要从注册表入手。相关注册表配置如下:
; Drives (My Device)
[HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000-000000000046}]
"DisplayName"=mui_sz:"ceshell.dll,#20482"
"DefaultIcon"="\\Windows\\ceshell.dll,-4354"
[HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000-000000000046}\InprocServer32]
@="\\Windows\\ceshell.dll"
 
; Recycle Bin (BitBucket)
[HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000-000000000046}]
"DisplayName"=mui_sz:"ceshell.dll,#20481"
"DefaultIcon"="\\Windows\\ceshell.dll,-4352"
"AltIcon"="\\Windows\\ceshell.dll,-4355"
[HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000-000000000046}\InprocServer32]
@="\\Windows\\ceshell.dll"
 
简单解释一下:
“DisplayName”:显示的名字,名字来源于ceshell.dll中的资源,其中My Device的资源ID为20482,Recycle Bin的资源ID为20481
“DefaultIcon”:显示的图标,图标来源于ceshell.dll中的资源,其中My Device的图标资源ID为4354,Recycle Bin的图标资源ID为4352
“AltIcon”:是指Recycle Bin中有东西时候的图标,大家都知道Recycle Bin空的时候和有东西的时候,图标显示是不一样的,这个图标资源来源于ceshell.dll中的图标资源,ID为4355
 
实际上,他们都来源于ceshell.dll中的资源文件,这个我们需要看一下\WINCE600\public\shell\oak\hpc\ceshell\ui目录下的resource.h和ceshui_base.rc两个文件,在resource.h中找到如下定义:
#define IDS_DISPLAY_RECYCLEBIN       0x5001     //20481
#define IDS_DISPLAY_DRIVES                   0x5002    //20482
 
#define IDI_BITBUCKET                 0x1100   //4352
#define IDI_BITBUCKET_FULL    0x1103    //4355
#define IDI_MYCOMPUTER           0x1102   //4354
 
这些就是ID资源的定义,根据这些可以在cehui_base.rc中找到相应的资源,如下:
IDS_DISPLAY_RECYCLEBIN       "Recycle Bin"
IDS_DISPLAY_DRIVES           "My Device"
 
IDI_BITBUCKET           ICON   DISCARDABLE   "RES\\bitbucket.ico"
IDI_BITBUCKET_FULL      ICON   DISCARDABLE   "RES\\bitbucket_full.ico"
IDI_MYCOMPUTER          ICON   DISCARDABLE   "RES\\mycomputer.ico"
如果想更换图标或者改名字,修改cehui_base.rc就可以了。首先把自己的图标拷贝到\WINCE600\public\shell\oak\hpc\ceshell\ui\res目录下面,然后在resource.h中定义几个新的ID,在cehui_base.rc中将新定义的ID和相应的图标或者名字相关联。
接下来打开工程的project.reg文件,添加下面的内容:
; Drives (My Device)
[HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000-000000000046}]
"DisplayName"=mui_sz:"ceshell.dll,#20736"
"DefaultIcon"="\\Windows\\ceshell.dll,-4624"
[HKEY_CLASSES_ROOT\CLSID\{000214A0-0000-0000-C000-000000000046}\InprocServer32]
@="\\Windows\\ceshell.dll"
 
; Recycle Bin (BitBucket)
[HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000-000000000046}]
"DisplayName"=mui_sz:"ceshell.dll,#20737"
"DefaultIcon"="\\Windows\\ceshell.dll,-4625"
"AltIcon"="\\Windows\\ceshell.dll,-4355"
[HKEY_CLASSES_ROOT\CLSID\{000214A1-0000-0000-C000-000000000046}\InprocServer32]
@="\\Windows\\ceshell.dll"
 
这些配置是为了修改显示名字和图标,主要是修改ceshell.dll中的资源ID
 
最后打开工程的命令行窗口,切换到\WINCE600\public\shell\oak\hpc\ceshell目录,运行build进行编译,然后重新编译WinCE工程。
 
最后编译完成以后,运行WinCE就可以看到墙纸以及My DeviceRecycle Bin的名字和图标都被更换了。如图:
本文作者:ARM-WinCE 来源:网络http://blog.csdn.net/nanjianhui/archive/2009/06/19/4282613.aspx
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读