随着支持Windows Mobile的手机越来越多,想不想让自己的手机与众不同呢?如果你有兴趣,那么让我们从最常用的短信开始,让我们给系统的短信换换脸。
首先短信接收程序是系统tmail应用程序下面的一个插件,一般来说叫tmail通过两部分键值来管理底下的插件,一部分和帐户类型相关,键值位置在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Inbox\Svc]下面,它通常管理着帐户类型信息,一般与Message的传输协议有关,这里我们并不关心这个。另外一个和消息类型相关,键值位置在[HKEY_CURRENT_USER\Software\Microsoft\Inbox\MsgTypes\IPM]下面,它描述了和消息类型具体相关的信息,比如用什么DLL编辑或者播放该类型MESSAGE等等,其中也包含了我们所关心的MESSAGE图标的信息,下面我以系统SMS为例,说明一下如何替换掉系统默认的图标,换成我们自己的ICON,首先声明,不一定所有的ROM都支持该功能,只有比较新的WM5.0的DEVICE才支持该功能,我试的是微软发布的320X240 SP横屏模拟器,有兴趣大家可以去下个来试试。
首先我们把注意力集中到[HKEY_CURRENT_USER\Software\Microsoft\Inbox\MsgTypes\IPM\SMStext]这个键里面,这里描述的就是和SMS相关的信息,下面简要介绍一下:
"DLL"="htmlnote.dll" //表明Form DLL,所谓Form DLL,就是指拿来编辑和播放SMS的库,他应该支持FormFactoryEx调用接口。
"Name"="SMS" //顾名思义,名字
"GlyphInfo"=hex:\
20,00,00,00,65,00,00,00,65,00,00,00,00,00,00,00,01,00,00,00,03,00,00,00,02,\
00,00,00,00,00,00,00 //图标信息
"GlyphDll"="htmlnote.dll" //指定图标所在库,通常DEVICE里面没有这个键值,默认就是DLL指向的库。
有没有看到GlyphInfo里面的两个65,其实它代表了图标的资源ID,0x65刚好是101。
消息的图标文件是按照一定格式组成的8位的位图文件,按照什么格式呢?别急,默认的图标文件不是在htmlnote.dll里面吗,而且ID是101,读出来看看就知道,结果如下:

不难看出,它是以一定宽度高度排列的ICON列表,每隔一定象素单位的块就代表一个类型对应ICON。对于不同分辨率,块大小是不一样的,下面列出常见的3种大小:
- 16x16 (96 DPI)
- 22x22 (131 DPI)
- 32x32 (192 DPI)
现在,不难看出,要想自己个性化SMS图标,要做以下几件事情:
1. 一般不会全部替换系统的图标,所以你可以先把系统的图标先截出来,在它基础上在指定的位置换上自己的图标。
2. 创建DLL工程,添加自己完成的BITMAP文件,通过GlyphInfo键值确定资源ID号,编译并且输出到\Windows目录下。
3. 在[HKEY_CURRENT_USER\Software\Microsoft\Inbox\MsgTypes\IPM\SMStext]下面创建STRING类型键值”GlyphDll”,值设置为你编好的库的名字,比如”MyIcon.dll”
4. 重起TMAIL程序,看看效果,成功了没?
这是更换以后的效果图:

以前在CSDN上传图老是失败,看这次能不能成功。
关于GlyphDll,我试过不少DEVICE,但是只有个别AKU2以上的设备才支持,如果大家试不出来,别急,先拿模拟器试试自己的做法有没有做,说不定DEVICE压根不支持,那就做无用功了,最新的SP横屏模拟器在微软网站即有下载。目前对于这块还不清楚的是透明色的设置,系统默认的是RGB(252,1,255),还不知道怎么去改,今天先写到这,欢迎拍砖!
无聊客(blog.csdn.net\yzx0023)
2006-8-19
yzx0023@gmail.com
发表于 @ 2006年08月19日 00:58:00|评论(loading...)|编辑