您的位置:首页 > 其它

WinCE控制面板添加应用程序+WinCE开始菜单中添加应用程序+WinCE桌面墙纸及图标更换+WinCE文件目录定制及内存调整

2010-10-12 18:33 459 查看
1.WinCE控制面板添加应用程序

WinCE
系统中的控制面板和
Windows
系统中的控制面板原理是一样的,里面就是包含了一些应用程序。
WinCE
系统的控制面板由
Ctlpnl.exe

Control.exe
和一些
.cpl


文件组成

,其中
Ctlpnl.exe

Control.exe
用于控制控制面板的文件夹显示和架构,而
.cpl
文件和控制面板中的实际应用程序相对应。

WinCE
的控制面板中的每个应用程序都由两部分组成:应用程序本身和所对应的
.cpl
文件。实际上

.cpl
文件就是一个
dll

,在该
dll
中会导出
CPLApplet
函数,该函数会处理来自控制面板的消息
(CPL_INIT, CPL_DBCLK, CPL_STOP

)
,然后根据相应的消息来调用应用程序。

先来看一下
CPlApplet
函数,如下:

LONG CPlApplet(HWND hwndCPl, UINT msg, LPARAM lParam1, LPARAM lParam2)


hwndCPl

:控制面板窗口的句柄

msg

:发给控制面应用程序的消息

lParam1

:消息参数
1

lParam2

:消息参数
2
http://blog.csdn.net/nanjianhui/archive/2009/07/10/4336897.aspx
2.WinCE开始菜单中添加应用程序

添加应用程序到
WinCE
的开始菜单中应该是一个比较常用的功能,在产品定制的时候,添加本产品的应用到
StartMenu
中,让用户可以方便启动程序,下面就来介绍一下:

先说一下原理,其实


WinCE
启动以后,点击
Start
,然后点击
Programs
,里面所能看到的应用其实也都是以文件的形式存放的,它们存放在
/Windows/Programs


目录下面,都是一些快捷方式文件,这些快捷方式文件连接了真正的应用程序

,就这么简单。
http://blog.csdn.net/nanjianhui/archive/2009/07/01/4313044.aspx
3.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”
,现在我想把他们的图标和名字也更换了,当然还要从注册表入手..................

4.
WinCE文件目录定制及内存调整

这个说起来比较简单,
WinCE
的文件目录结构以及文件的位置都是在
DAT
文件中定义的。所有的
dat
文件会在
WinCE
编译时合并成
initobj.dat
文件,
WinCE
会根据
DAT
中的描述生成相应目录。



关于
DAT
的格式,可以参考我以前的一片文章:
”WinCE BSP

DAT
文件介绍

,看了就明白了。

我一般在
project.dat
中定制自己想要的目录结构,举个例子如下:

root:-Directory("Sounds")

root:-Directory("Movies")

Directory("/Movies"):-Directory("Chinese")

Directory("/Movies"):-Directory("English")

Directory("/Sounds"):-File("hello.wav", "/Windows/hello.wav")

应该比较好理解,创建两个根文件夹
Sounds

Movies
,在
Movies
中创建两个子文件夹
Chinese

English
,将
hello.wav
拷贝到
Sounds
目录下。

编辑完
project.dat
以后,重新
Makeimg
就可以了。启动
WinCE
就可以看到所创建的文件夹了。

接下来说一下
WinCE
内存的定制。
WinCE
系统可使用的内存被分为
Storage Memory


Program Memory

两部分。
Storage Memory
用于
Object Store
,而
Program Memory
用于程序内存。

关于
Object Store
,在
WinCE

中是指一个可以永久保存数据的存储空间
,即使在掉电的情况下,数据可以在备份电源的支持下不丢失,达到永久保存的效果。其实就是一块内存,一般包括文件系统,数据库和系统注册表

Object Store
的最大空间不能超过
256MB
,其中所能包含的最大文件是
32MB

Object Store
中是由很多
Object
组成,这些
Object
可能是一个文件,一个数据库,一条数据库记录,一个注册表键,一个键值等。


Object Store
中,
WinCE
系统会分配给每一个
Object
一个
ID
,被称为
CEOID
。每个
Object

CEOID

Volume
中都是唯一的。同样,在
Object Store
中的每一个
Volume
也有一个
ID
,被称为
CEGUID
,这样使用
CEGUID

CEOID
就可以在
Object Store
中找到相应的
Object
了。

顺便介绍个函数:

BOOL CeOidGetInfoEx( PCEGUID pceguid, CEOID oid, CEOIDINFO* poidInfo)


调用该函数可以获得
Object Store
中某个
Object
的信息,
pceguid

oid
是要查找对象的
CEGUID

CEOID

poidInfo

Object
的信息。

那么如何获得
CEGUID

CEOID
呢?对于不同的
Object
类型,有不同的函数,如下:

Directory or File



FindFirstFile(..) / FindNextFile(..) / GetFileInformationByHandler(..)

Database



CeCreateDatabaseEx2(..) / CeFindNextDatabaseEx(..)

Database record



CeSeekDatabaseEx(..) / CeReadRecordPropsEx(..) / CeWriteRecordPropsEx(..)

Mounted Database volume



CeMountDBVol(..) / CeEnumDBVolumes(..)

所以,


WinCE
系统中,对内存的调节就是在调整
Object Store
和程序内存的大小。默认情况下是
Storage Memory/Program Memory
各占一半。有三种方法可以实现对内存的调整:



1.

config.bib
文件中调整
FSRAMPERCENT
,具体如何设置在
BIB
文件的介绍中解释过,这里不多说了。



2.

OAL
中调用
pOEMCalcFSPages
函数为
Object Store
分配内存。



3.

WinCE
启动以后,进入系统的
control panel
,然后打开
System
,选择
Memory
在界面中进行调整。



4.
通过函数
SetSystemMemoryDivision(..)
来调整。多说一句,可以通过调用
GetSystemMemoryDivision(..)
来获得当前
Object Store
的内存使用情况。



关于
Storage Memory

Program Memory
的调整,主要还是看系统的需求,一般情况下
Storage Memory
不需要太大,可以根据自己的需要适当的调整。但是要注意,两部分内存都不能调整的太小,调整的太小会导致数据丢失,甚至是死机,到时候只能重起系统了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: