一、 EBOOT启动界面LOGO
a) 可供备选方案有1. 将图像数据写入NANDFLASH固定位置,优点是图像数据大,不会占用EBOOT大小;2. 直接将图像数据写成头文件,包含到工程中编译,优点是方式容易理解,但按目前的EBOOT大小,能放入320*240的二值图,也就是320*240/8=960Byte。最后选择第二种方案
b) 生成一幅LOGO位图,采用PYTHON的图像库将图像变为二值图,再将二值图转为头文件。
c) 更改%PLATFORM%/SRC/boot/display下的bsp_logo.c文件,在其中加入新的显示LOGO函数,写法可以参考原ShowLogo函数,但注意的是g_dwLogoPosX、g_dwLogoPosY、g_dwLogoWidth、g_dwLogoHeight必须保持为0,0,640,480,不可以更改为新的LOGO位置。在%PLATFORM%/SRC/INC/bsp_logo.h中添加新的函数声明。
d) 更改%PLATFORM%/SRC/boot/eboot下的nand和sdmemory下的cfg.c文件中的BLShowLogo函数,将原调用ShowLogo函数改为调用新显示LOGO的函数。
二、 修改启动后的背景界面
替换%PLATFORM%/FILES/omaphand.jpg为自己想要的背景图片,以便在后台长驻的辅助程序在进行与主软件相互切换时不露出破绽。
三、 关闭任务栏
备选方案有:1. 修改taskbar.cpp或explorer.cpp,以从根本上去掉taskbar,但在实践中发现后台辅助程序会死,而且桌面无法响应鼠标消息。2. 在启动程序时不断查找名为“HHTaskBar”的窗口,然后调用ShowWindow函数将其隐藏,HWND hWnd = ::FindWindow(_T("HHTaskBar"), NULL); ::ShowWindow(hWnd, SW_HIDE);缺点是任务栏会在用户面前一闪而过,存在一定瑕疵,但尚可接受,也不会引起任何依赖任务栏的功能无法使用。
四、 去除桌面“我的电脑”“回收站”的图标
代码%_winceroot%/public/shell/oak/files
在shell.reg文件中找到这两个键值,它们对应着桌面上的我的电脑和回收站,删除这两个键值:
[HKEY_LOCAL_MACHINE/Explorer/Desktop]
"{000214A0-0000-0000-C000-000000000046}"="My Computer"
"{000214A1-0000-0000-C000-000000000046}"="Recycle Bin"
五、 设置桌面背景色
在背景图片不够大或者无法确定分辨率的时候,为了背景能与桌面壁纸图片融合,可以使用SetSysColors函数将桌面背景(索引为COLOR_BACKGROUND)改为需要的纯色,此函数可在explorer并未完全加载时调用(修改注册表中的”Launch80”值设置启动程序即可),用户不会看到你调用SetSysColors之前的颜色,但是此方法弊端在于,用户如果更改了主题,颜色就回去了,桌面上的壁纸破绽就被看见了。
六、 设置启动程序
开机自启动有三种方案:1. 将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到StartUp目录下,这样当系统运行后应用程序就能自动运行;2、 直接替换Wince的SHELL,即修改注册表:
[HKEY_LOCAL_MACHINE/init]
"Launch50"="explorer.exe"
"Depend50"=hex:14,00, 1e,00
把这个explorer.exe改成你的应用程序(比如:MyApp.exe);
3、 把应用程序加入到映像,修改注册表:
[HKEY_LOCAL_MACHINE/init]
"Launch80"="MyApp.exe"
"Depend80"=hex:1E,00
可以设置启动顺序和依赖程序;
我们最后采用的方案为第三种。但由于这个程序必须直接存储在NK.bin中,所以如果需要升级此文件就必须重新烧制NK,因此我们并不直接设置为主程序,而专门写了一个启动加载程序,用来间接加载不在NK中的主程序,同时以便系统升级。
七、 主软件加载程序
B超软件加载程序的流程为:
本文参考了多处网络文章,其中一处为http://blog.csdn.net/91program/archive/2008/05/08/2415352.aspx