新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > WinCE桌面墙纸及图标更换

WinCE桌面墙纸及图标更换

作者:时间:2011-02-24来源:网络收藏

网上关于WinCE更换墙纸的文章一大堆,我也来写一篇,和网上已有的文章没什么区别。以前写的WinCE Blog大部分都是BSP相关的,以后打算写点WinCE系统定制方面的,就从这里开始吧。

关于WinCE的墙纸,是在注册表中设置的,编译完WinCE工程以后,所有的reg文件中的内容都会被合并为reginit.ini文件。打开这个文件,可以找到如下内容:

[HKEY_CURRENT_USERControlPanelDesktop]

"wallpaper"=\Windows\WindowsCE.bmp

默认情况下,显示的是WindowsCE.bmp文件,但是被编译工程的release目录下并没有WindowsCE.bmp文件,倒是可以看到windowsce_qvgap.bmpwindowsce_vgal.bmp两个文件。这里需要看一下WINCE600publicshellfilesshell.bib文件中的定义就明白了。

说白了,更换墙纸就是改注册表设置。最简单的方法就是修改project.bibproject.reg文件。首先在project.bib文件中添加如下内容:

kungfuPanda.bmp d:WINCE600OSDesignsEmulatorEmulatorRelDirDeviceEmulator_ARMV4I_Releasewall.bmpNK S

然后在project.reg文件添加如下内容:

[HKEY_CURRENT_USERControlPanelDesktop]

"wallpaper"="\Windows\kungfuPanda.bmp"

最后将这两个文件拷贝到工程编译的release目录下面,重新Makeimg就可以了。在WinCE启动以后,我们会看到墙纸已经被更换,同样还能看到桌面上的”My Device””Recycle Bin”,现在我想把他们的图标和名字也更换了,当然还要从注册表入手。相关注册表配置如下:

; Drives (My Device)

[HKEY_CLASSES_ROOTCLSID{000214A0-0000-0000-C000-000000000046}]

"DisplayName"=mui_sz:"ceshell.dll,#20482"

"DefaultIcon"="\Windows\ceshell.dll,-4354"

[HKEY_CLASSES_ROOTCLSID{000214A0-0000-0000-C000-000000000046}InprocServer32]

@="\Windows\ceshell.dll"

; Recycle Bin (BitBucket)

[HKEY_CLASSES_ROOTCLSID{000214A1-0000-0000-C000-000000000046}]

"DisplayName"=mui_sz:"ceshell.dll,#20481"

"DefaultIcon"="\Windows\ceshell.dll,-4352"

"AltIcon"="\Windows\ceshell.dll,-4355"

[HKEY_CLASSES_ROOTCLSID{000214A1-0000-0000-C000-000000000046}InprocServer32]

@="\Windows\ceshell.dll"

简单解释一下:

“DisplayName”:显示的名字,名字来源于ceshell.dll中的资源,其中My Device的资源ID20482Recycle Bin的资源ID20481

“DefaultIcon”:显示的图标,图标来源于ceshell.dll中的资源,其中My Device的图标资源ID4354Recycle Bin的图标资源ID4352

“AltIcon”:是指Recycle Bin中有东西时候的图标,大家都知道Recycle Bin空的时候和有东西的时候,图标显示是不一样的,这个图标资源来源于ceshell.dll中的图标资源,ID4355

实际上,他们都来源于ceshell.dll中的资源文件,这个我们需要看一下WINCE600publicshelloakhpcceshellui目录下的resource.hceshui_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就可以了。首先把自己的图标拷贝到WINCE600publicshelloakhpcceshelluires目录下面,然后在resource.h中定义几个新的ID,在cehui_base.rc中将新定义的ID和相应的图标或者名字相关联。

接下来打开工程的project.reg文件,添加下面的内容:

; Drives (My Device)

[HKEY_CLASSES_ROOTCLSID{000214A0-0000-0000-C000-000000000046}]

"DisplayName"=mui_sz:"ceshell.dll,#20736"

"DefaultIcon"="\Windows\ceshell.dll,-4624"

[HKEY_CLASSES_ROOTCLSID{000214A0-0000-0000-C000-000000000046}InprocServer32]

@="\Windows\ceshell.dll"

; Recycle Bin (BitBucket)

[HKEY_CLASSES_ROOTCLSID{000214A1-0000-0000-C000-000000000046}]

"DisplayName"=mui_sz:"ceshell.dll,#20737"

"DefaultIcon"="\Windows\ceshell.dll,-4625"

"AltIcon"="\Windows\ceshell.dll,-4355"

[HKEY_CLASSES_ROOTCLSID{000214A1-0000-0000-C000-000000000046}InprocServer32]

@="\Windows\ceshell.dll"

这些配置是为了修改显示名字和图标,主要是修改ceshell.dll中的资源ID

最后打开工程的命令行窗口,切换到WINCE600publicshelloakhpcceshell目录,运行build进行编译,然后重新编译WinCE工程。

最后编译完成以后,运行WinCE就可以看到墙纸以及My DeviceRecycle Bin的名字和图标都被更换了。如图:

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


linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭