掌心万年历今日插件皮肤制作说明 2008/11/30

掌心万年历皮肤为HandCalendar\TodaySkins目录下的*.ini文件（ASCII格式的文本文件）
文件行首如果是#，表示该行是注释行。

皮肤分为以下几个部分：
Name, 
Refresh, 
DrawCalendar, 
DrawPic, 
DrawString, 
DrawStringEx, 
DrawClock, 
SetFestivalFont, 
SetFestivalRect, 
ClickAction, 
Height,
OnScreenNormal,
OnScreenLandscape

1) Name表示皮肤名字，参数是名称，比如：
Name=显示LCD时钟(居右)
表示该皮肤的名字是"显示LCD时钟(居右)"

2) Refresh表示更新频率，参数是：(0-每天, 1-每分钟, 2-每秒, 其他数值表示多少秒)，比如：
Refresh=2
表示该皮肤的更新频率是"每秒"(注意每秒更新可能会降低您的电池使用时间)
Refresh=15
表示该皮肤的更新频率是每15秒刷新一次
建议：在有秒钟显示的皮肤里使用2，有分钟显示的皮肤里使用1，其他均使用0

3) DrawCalendar表示显示月历，参数是：(上top像素，左left像素，周六是否节假日，周一为每周开始)
DrawCalendar=4,304,1,0
表示该皮肤在(4,304)坐标显示月历，周六是节假日显示为红色，周一不是每周开始(周日是)

4) DrawPic表示显示图片，参数是：(上top, 左left, 透明色#000000-#FFFFFF, 图片)，比如：
DrawPic=2,2,#000000,clock16.bmp
表示该皮肤在(2,2)坐标显示图片clock16.bmp，且把颜色#000000作为透明色
(*注1:对PNG图片，透明色参数无效)
(*注2:掌心万年历暂时只支持32位色的PNG图片)
(*注3:文件名可以使用系统变量)

5) DrawString表示显示字符串，参数是 (字体大小，上top像素，左left像素，字符串)，比如：
DrawString=9,5,28,{SY1}-{SM}-{SD}({WD}) {JQ}
表示该皮肤在(5,28)坐标显示字体大小为9的字符串"{SY1}-{SM}-{SD}({WD}) {JQ}"，该字符串会被系统自动替换为相应的数据。
(*注1:字符串可以使用系统变量)

6) DrawStringEx表示显示格式化字符串，参数是 (大小，上top，左left，宽度，排版(0-居左, 1-居中, 2-居右)，颜色(#000000-#FFFFFF)，粗细(0-1000,400是普通,700是粗体)，字符串)，比如：
DrawStringEx=9,96,20,200,1,#00FF00,700,居中粗体-电池剩余{BatteryPercent}%
表示该皮肤在(96,20)坐标，宽度200，居中显示字体大小为9的绿色(#00FF00)字符串"居中粗体-电池剩余{BatteryPercent}%"，该字符串会被系统自动替换为相应的数据。
(*注1:字符串可以使用系统变量)

7) DrawClock表示显示指针时钟，参数是 (上top，左left，指针时钟图片目录)，比如：
DrawClock=10,0,VistaClock
表示该皮肤在(10,0)坐标，显示指针时钟，图片目录为TodaySkins\VistaClock
系统将会加载并顺序绘制以下6个文件（如果有文件不存在就忽略，注意 face.png 是必须的文件）
a) face.png (表盘)
b) hour.png (时针)
c) minute.png (分针)
d) second.png (秒针)
e) dot.png (最外层的圆心)
f) hilight.png (高光)

8) SetFestivalFont表示设置节日信息显示的字体和颜色，参数是 (大小, 颜色[#000000-#FFFFFF, 0表示使用系统颜色])
SetFestivalFont=9,#0000FF
表示该皮肤使用9号字体，颜色为#0000FF(蓝色)显示节日信息
SetFestivalFont=11,0
表示该皮肤使用11号字体，使用系统颜色显示节日信息
(*注1:默认为9号字体,系统颜色显示节日信息)

9) SetFestivalRect表示设置节日信息显示区域，参数是 (上top[-1表示使用默认值], 左left, 宽度width)
SetFestivalRect=200,10,220
表示该皮肤在top=200的位置显示节日信息，左边坐标10，宽度220
SetFestivalFont=-1,0,120
表示该皮肤在默认top的位置显示节日信息，左边坐标0，宽度120

10) Height表示设置皮肤为固定高度，参数是高度像素值
Height=100
表示该皮肤在今日桌面显示的高度是固定的100个像素

11) ClickAction表示在某个区域接收到用户点击后触发的事件，参数是 (上Top, 左Left, 宽度Width, 高度Height, 事件类型[0-启动程序,1-打开新皮肤,2-打开设置窗口,3-刷新今日]), 事件字符串(启动的程序路径 或者 打开的皮肤文件名，对于2,3该项无效)
ClickAction=98,4,72,80,0,{MainDir}\HandCalendar.exe
表示该皮肤在区域(98,4,72,80)接收到用户点击以后，打开掌心万年历主程序
ClickAction=16,80,72,80,0,\Windows\tmail.exe -transport "SMS"
表示该皮肤在区域(16,80,72,80)接收到用户点击以后，打开短消息
ClickAction=16,160,72,80,1,skin2.ini
表示该皮肤在区域(16,160,72,80)接收到用户点击以后，更换为皮肤skin2.ini
(*注1:ClickAction支持键盘操作)
(*注2:在ClickAction区域不能长按弹出设置菜单)
(*注3:ClickAction命令支持系统变量)
(*注4:打开的程序支持快捷方式，比如\Windows\ABC.LNK)

12)OnScreenNormal表示当屏幕竖屏的时候更换的皮肤，参数是皮肤文件名
OnScreenNormal=test.ini
表示该皮肤在屏幕竖屏的时候更换为test.ini皮肤

13)OnScreenLandscape表示当屏幕横屏的时候更换的皮肤，参数是皮肤文件名
OnScreenLandscape=test_landscape.ini
表示该皮肤在屏幕竖屏的时候更换为test_landscape.ini皮肤

V2.8 正式版 支持的系统变量有：

【公历】
# {SY} - 公历年，返回值: 2007
# {SM} - 公历月，返回值: 1,2,...,12
# {SD} - 公历日，返回值: 1,2,...,31
# {SY1} - 公历年(2位数)，返回值: 99, 07
# {SM_0} - 公历月十位，返回值: 0,1
# {SM_1} - 公历月个位，返回值: 0,1,2,...,9
# {SD_0} - 公历日的十位，返回值: 0,1,2,3
# {SD_1} - 公历日的个位，返回值: 0,1,2,...,9
# {SY_0} - 四位年的第一位数字，返回值:0,1,2
# {SY_1} - 四位年的第二位数字，返回值:0,1,2,...9
# {SY_2} - 四位年的第三位数字，返回值:0,1,2,...9
# {SY_3} - 四位年的第四位数字，返回值:0,1,2,...9
# {SM2} - 公历月，返回值: 01,02,...,12
# {SD2} - 公历日，返回值: 01,02,...,31
# {WY:参数} - 今天是今年第几周，返回值:1,2,3,....52，参数为需要减去的修正值，比如开学在第12周，可以写"距离开学还有{WY:12}周"
# {WD} - 星期几，返回值: 一，二，...，日
# {WD2} - 星期几，返回值: 0,1,2,3,...,6 (0是周日)
# {XZ} - 星座文字，返回值: 摩羯, 宝瓶, ..., 射手
# {XZ2} - 星座编号，返回值: 0-摩羯, 1-水瓶, ..., 12-射手

【农历】
# {SX} - 生肖，返回值: 鸡，狗，...，羊
# {LY} - 农历年，返回值: 2006,2007
# {LM} - 农历月，返回值: 一，二，...，十，腊，东
# {LD} - 农历日，返回值: 一，二，...，三十
# {GY} - 干支年，返回值: 甲子年
# {GM} - 干支月，返回值: 甲子月
# {GD} - 干支日，返回值: 甲子日
# {LM2} - 农历月，返回值: 01,02,03,...,12
# {LD2} - 农历日，返回值: 01,02,03,...30
# {LD2_0} - 农历日十位，返回值: 0,1,2,3
# {LD2_1} - 农历日个位，返回值: 0,1,2,...,9
# {LD3_0} - 农历日汉字的第一位，返回值: 初，十，廿，三
# {LD3_1} - 农历日汉字的第二位，返回值: 一，二，三，...，十
# {LM3} - 农历月，返回值: 一，二，...，十，十一，十二
# {JQ} - 农历节气(不带时间)，返回值: 立春
# {JT} - 农历节气(带时间)，返回值: 立春03:30
# {RY} - 农历闰月，返回值: 闰 / (空白)
# {RY2} - 农历是否闰月，返回值: 1/0
# {SC} - 农历时辰，返回值: 子/丑/.../亥
# {SC2} - 农历时辰，返回值: 甲子/甲丑/.../癸亥
# {SJSF} - 三九三伏入梅出梅，返回值: 入梅/出梅/初伏第2天/三九第9天/...

【时钟】
# {SH} - 公历时(24小时制)，返回值: 0,1,...,23
# {SH12} - 公历时(12小时制)，返回值: 1,2,...,12
# {SF} - 公历分，返回值: 0,1,...,59
# {SS} - 公历秒，返回值: 0,1,...,59
# {SH12_0} - 公历12小时制十位，返回值: 0,1
# {SH12_1} - 公历12小时制个位，返回值: 0,1,..,9
# {SH0} - 公历24时十位，返回值: 0,1,2
# {SH1} - 公历24时个位，返回值: 0,1,..,9
# {SF0} - 公历分十位，返回值: 0,1,..,5
# {SF1} - 公历分个位，返回值: 0,1,..,9
# {SS0} - 公历秒十位，返回值: 0,1,..,5
# {SS1} - 公历秒个位，返回值: 0,1,..,9
# {APM} - AM/PM，返回值: am,pm
# {APM_CHS} - AM/PM中文，返回值: 上午/下午
# {IsAM} - 当前是否AM，返回值: 0,1
# {IsPM} - 当前是否PM，返回值: 0,1
# {HasAlarm} - 是否有闹钟，返回值: 0,1
# {NextAppointment} - 下一个日程安排(WM5之后支持)

【系统资源】
# {MemRestMB} - 内存剩余MB(带一位小数)，返回值: 0.0,1.9,...
# {MemRestPercent} - 内存剩余比，返回值: 0,1,...,99,100
# {MemUsedMB} - 内存使用MB(带一位小数)，返回值: 0.0,0.1,...
# {MemUsedPercent} - 内存使用百分比，返回值: 0,1,...,99,100
# {BatteryPercent} - 电源剩余百分比，返回值: 0,1,...,99,100
# {BatteryLevel} - 电源剩余量(10个等级)，返回值: 1,2,3,4,5,6,7,8,9,10
# {BatteryFlag} - 电池状态，返回值: 0-正在充电, 1-电量正常, 2-电量低, 3-电量非常低, 4-没有电池, 5-未知状态
# {BatteryFlagName} - 电池状态，返回值: 正在充电/电量正常/电量低/电量非常低/没有电池/未知状态
# {Landscape} - 屏幕是横向还是纵向，返回值: 0-纵向屏幕/1-横向屏幕
# {ACPower} - 电池是否在充电，返回值: 0-没有充电, 1-正在充电
# {StoreRestMB} - RAM存储剩余MB(带一位小数)，返回值: 0.0,1.9,...
# {StoreRestPercent} - RAM存储剩余比，返回值: 0,1,...,99,100
# {StoreUsedMB} - RAM存储使用MB(带一位小数)，返回值: 0.0,0.1,...
# {StoreUsedPercent} - RAM存储使用百分比，返回值: 0,1,...,99,100
# {BTMode} - 蓝牙状态，返回值: 0(关闭或者不存在),1(打开),2(可发现)

【电话相关】
# {UnreadSMS} - 未读短信数量(WM5之后支持)，返回值: 0,1,2...
# {MissedCall} - 漏接电话数量(WM5之后支持)，返回值: 0,1,2...
# {UnreadSMS2} - 是否有未读短信(WM5之后支持)，返回值: 0,1
# {MissedCall2} - 是否有漏接电话(WM5之后支持)，返回值: 0,1
# {Signal} - 电话信号强度(WM5之后支持)，返回值: 0,1,2...,100
# {SignalLevel} - 电话信号强度等级(WM5之后支持)，返回值: 0,1,2...,10
# {Operator} - 电话运营商(WM5之后支持)，返回值: 中国移动,中国联通,...
# {UnreadMMS} - 未读彩信数量(WM5之后支持)，返回值: 0,1,2...
# {UnreadMMS2} - 是否有彩信短信(WM5之后支持)，返回值: 0,1

【其他】
# {01} - 0/1奇偶器（第一次调用返回0，下次调用返回1），返回值: 0,1
# {Colone01} - 冒号，返回值: : / (空白)
# {S1} - 1秒奇偶器（奇数秒返回1，偶数秒返回0），返回值: 0,1
# {S10} - 10秒奇偶器（秒的十位是奇数秒返回1，秒的十位是偶数秒返回0），返回值: 0,1
# {MainDir} - 返回掌心万年历程序所在主目录
# {SkinDir} - 返回掌心万年历当前今日皮肤所在主目录
# {Registry:注册表路径} - 显示注册表内容，比如 {Registry:HKEY_CURRENT_USER\System\State\Tasks\Active}



关于QVGA皮肤转VGA皮肤的制作技巧：
字体大小不需要变化，字体的显示位置乘以2就好了。
举例来说:
QVGA是DrawString=9,2,2,Hello world!
VGA对应的就是DrawString=9,4,4,Hello world!

如果在您制作自己的皮肤过程中，需要我们提供更多的系统变量，请告诉我们，谢谢！

FiT工作室
http://www.PDA01.com
HandCalendar@163.com

2008.11