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 Device Recycle Bin 的名字和图标都被更换了。如图:

 

 

我把原来的 My Device 更换为 Root ,把 Recycle Bin 更换为 Box ,把墙纸更换为功夫熊猫的墙纸了。看上去还不错啊。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值