WinCE桌面墻紙及圖標(biāo)更換
網(wǎng)上關(guān)于WinCE更換墻紙的文章一大堆,我也來寫一篇,和網(wǎng)上已有的文章沒什么區(qū)別。以前寫的WinCE Blog大部分都是BSP相關(guān)的,以后打算寫點WinCE系統(tǒng)定制方面的,就從這里開始吧。
關(guān)于WinCE的墻紙,是在注冊表中設(shè)置的,編譯完WinCE工程以后,所有的reg文件中的內(nèi)容都會被合并為reginit.ini文件。打開這個文件,可以找到如下內(nèi)容:
[HKEY_CURRENT_USERControlPanelDesktop]
"wallpaper"=\Windows\WindowsCE.bmp
默認(rèn)情況下,顯示的是WindowsCE.bmp文件,但是被編譯工程的release目錄下并沒有WindowsCE.bmp文件,倒是可以看到windowsce_qvgap.bmp和windowsce_vgal.bmp兩個文件。這里需要看一下WINCE600publicshellfilesshell.bib文件中的定義就明白了。
說白了,更換墻紙就是改注冊表設(shè)置。最簡單的方法就是修改project.bib和project.reg文件。首先在project.bib文件中添加如下內(nèi)容:
kungfuPanda.bmp d:WINCE600OSDesignsEmulatorEmulatorRelDirDeviceEmulator_ARMV4I_Releasewall.bmpNK S
然后在project.reg文件添加如下內(nèi)容:
[HKEY_CURRENT_USERControlPanelDesktop]
"wallpaper"="\Windows\kungfuPanda.bmp"
最后將這兩個文件拷貝到工程編譯的release目錄下面,重新Makeimg就可以了。在WinCE啟動以后,我們會看到墻紙已經(jīng)被更換,同樣還能看到桌面上的”My Device”和”Recycle Bin”,現(xiàn)在我想把他們的圖標(biāo)和名字也更換了,當(dāng)然還要從注冊表入手。相關(guān)注冊表配置如下:
; 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的資源ID為20482,Recycle Bin的資源ID為20481。
“DefaultIcon”:顯示的圖標(biāo),圖標(biāo)來源于ceshell.dll中的資源,其中My Device的圖標(biāo)資源ID為4354,Recycle Bin的圖標(biāo)資源ID為4352。
“AltIcon”:是指Recycle Bin中有東西時候的圖標(biāo),大家都知道Recycle Bin空的時候和有東西的時候,圖標(biāo)顯示是不一樣的,這個圖標(biāo)資源來源于ceshell.dll中的圖標(biāo)資源,ID為4355。
實際上,他們都來源于ceshell.dll中的資源文件,這個我們需要看一下WINCE600publicshelloakhpcceshellui目錄下的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資源的定義,根據(jù)這些可以在cehui_base.rc中找到相應(yīng)的資源,如下:
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"
如果想更換圖標(biāo)或者改名字,修改cehui_base.rc就可以了。首先把自己的圖標(biāo)拷貝到WINCE600publicshelloakhpcceshelluires目錄下面,然后在resource.h中定義幾個新的ID,在cehui_base.rc中將新定義的ID和相應(yīng)的圖標(biāo)或者名字相關(guān)聯(lián)。
接下來打開工程的project.reg文件,添加下面的內(nèi)容:
; 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"
這些配置是為了修改顯示名字和圖標(biāo),主要是修改ceshell.dll中的資源ID。
最后打開工程的命令行窗口,切換到WINCE600publicshelloakhpcceshell目錄,運行build進(jìn)行編譯,然后重新編譯WinCE工程。
最后編譯完成以后,運行WinCE就可以看到墻紙以及My Device和Recycle Bin的名字和圖標(biāo)都被更換了。如圖:
我把原來的My Device更換為Root,把Recycle Bin更換為Box,把墻紙更換為功夫熊貓的墻紙了??瓷先ミ€不錯啊。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論