转帖来的。学习..........
网上关于
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
,把墙纸更换为功夫熊猫的墙纸了。看上去还不错啊。