QQ2003皮肤制作帮助手册目录一、制作皮肤相关文件概述11.
1皮肤制作简易几步曲2二、各相关文件详解52.
1config.
xml文件52.
2VBScript.
vbs文件122.
3skin.
ine文件22三、相关文件使用函数解析24四、对应的皮肤中的具体图片304.
1config.
xml和VBScript.
vbs用到的图片304.
2Skin.
ini用到的图片32五、不规则皮肤制作335.
1config.
xml文件335.
2VBScript.
vbs文件36六、皮肤制作总结篇43一、制作皮肤相关文件概述朋友,你是否惊喜于QQ2003皮肤漂亮了许多,是否在心底已经开始对QQ皮肤的制作情有独钟、跃跃欲试了,呵呵,现在就让我们一起开始QQ2003皮肤制作的探索之旅吧.
首先让我们找到QQ安装路径下的一个名为"skins"的文件夹,打开后可以看到3个名称分别为"QQ2003"、"工业时代"、"花语"的文件夹.
对了,你可能已经猜到了,这3个文件夹就分别对应目前我们的QQ2003自带的3种皮肤!
在整个QQ皮肤的制作过程中,会涉及到3个文件,下面我们将以"QQ2003"这个皮肤为例,为大家介绍.
找到QQ安装路,打开\qq\skins\QQ2003\,可以看到这3个在制作皮肤过程中息息相关的文件:config.
xml:面板上除skin.
ini文件定义之外的按钮、边框、背景等配置信息都在此实现,各部分ID(名称标识)在此定义好后,在VBScript.
vbs中会具体用到.
VBScript.
vbs:QQ面板上各部分按钮的功能实现,在此实现与QQ之间的交互,同时还负责确定各部分图片在面板中的定位(如新皮肤中涉及到的调整按钮位置、皮肤提供的拉伸功能等需在此完成).
Skin.
ini:登陆QQ2003后,根据此文件加载面板上的分组folder(如"我的好友"、"陌生人""黑名单"等)和为QQ菜单(也叫系统菜单,包括"个人设定"、"系统参数"等)等设定颜色.
皮肤制作简易几步曲制作皮肤过程中,需要从效果出发,为皮肤各个的部分搭配设计好的对应颜色,具体实现方法是将整个皮肤按照功能和效果的不同,分成很多部分,然后为每部分对应图片(在config.
xml文件中为皮肤的各部分定义ID名称并且匹配使用过程中对应的各种图片)、重新按照自己的设计定位该部分在整个面板中的具体位置以及实现相应的功能(在VBScript.
vbs文件中,为config.
xml定义好ID的各部分和按钮定位在面板中的具体相对位置,并与QQ进行交互,实现各部分按钮的功能).
总的来说,在创作新皮肤的过程中,只要在保证QQ2003面板上每个按钮、菜单和功能存在的前提下,面板中各按钮的相对位置(VBScript.
vbs文件决定)以及对应的颜色及图片等(config.
xml文件决定)可以依据个人风格尽情发挥.
为了保证QQ全部功能的实现,config.
xml、VBScript.
vbs和Skin.
ini文件中一些代码是必须保留的,所以比较便捷的皮肤制作过程是在原有的文件基础上进行修改:在\qq\skins\下创建文件夹,以自己欲制作的皮肤命名,如"似水流年"挑选一种现有皮肤,如QQ2003,拷贝\qq\skins\QQ2003下的所有文件,保存到\qq\skins\似水年华中根据自己的皮肤设计需要,对应修改\qq\skins\似水年华中的相关部分,如:改变面板某部分对应的图片:在config.
xml文件中寻找该部分对应的ID和图片(该图片和config.
xml文件保存在相同路径下),然后用新的同名图片进行替换.
改变面板中某部分或者按钮的相对位置:在config.
xml文件中寻找该部分对应的ID,然后在VBScript.
vbs文件中的subWindow_OnSize(cx,cy)函数中修改对应该部分的位置定义代码.
所以可见,在config.
xml文件中为皮肤的各部分定义的ID是连接config.
xml文件与VBScript.
vbs文件的关键C、改变面板上的分组folder(如"我的好友"、"陌生人""黑名单"等)对应的图片和folder上字体颜色等,改变QQ菜单、状态菜单、左右键菜单的颜色:在skin.
ini文件中依照注释找到相关部分,进行修改即可4、当以上3个文件已经按照皮肤的设计需要修改完成,并且皮肤所需的图片也全部保存到相同路径到\qq\skins\似水年华下后,打开QQ系统菜单——更改皮肤,就可以看到自己刚刚保存的皮肤,如图1.
1所示,进一步选择就可以看到自己制作好的新皮肤了!
图1.
1添加皮肤"似水年华"在皮肤制作中,config.
xml文件为面板各部分定义了ID并对应了图片,这个ID是连接config.
xml文件与VBScript.
vbs文件的关键,因为在VBScript.
vbs文件中将使用ID确定各部分在面板中的具体位置及实现相关功能.
为了大家在皮肤制作中更加随心所欲、应用自如,我们还提供了QQ2003皮肤制作帮助手册供大家下载阅读.
由于功能需要,将QQ面板中划分了很多部分,在config.
xml文件中为众多部分定义了ID并对应相关图片,为便于大家阅读代码熟悉各ID对应面板中的具体位置,在第四章中,我们以QQ2003为例显示了各ID在面板中对应的具体图片;同时在第二章,我们对config.
xml、VBScript.
vbs和Skin.
ini等文件分别加以介绍,对各部分代码进行了注释,在阅读代码过程中,大家选择其中的ID可以链接到第四章的相关地方查看对应的图片以确定在面板中的具体位置,选择各函数,也可以链接到第三章函数解析中,熟悉各函数的具体参数,此外一些不规则皮肤备受用户喜爱,我们将在第五章为大家进行揭密!
二、各相关文件详解制作皮肤过程中,需要从效果出发,为皮肤各个的位置搭配设计好的对应颜色,具体实现方法是将整个皮肤按照功能和效果的不同,分成很多部分,然后为每部分对应颜色图片和实现相应的功能,具体说来:config.
xml:面板上除skin.
ini文件定义之外的按钮、边框、背景等配置信息都在此实现,各部分ID(名称标识)在此定义好后,在VBScript.
vbs中会具体用到.
VBScript.
vbs:QQ面板上各部分按钮的功能实现,在此实现与QQ之间的交互,同时还负责确定各部分图片在面板中的定位(如新皮肤中涉及到的调整按钮位置等需在此完成).
Skin.
ini:登陆QQ2003后,根据此文件加载面板上的分组folder(如"我的好友"、"陌生人""黑名单"等)和为QQ菜单(也叫系统菜单,包括"个人设定"、"系统参数"等)等设定颜色.
为了便于大家更好的理解config.
xml、VBScript.
vbs和Skin.
ini在皮肤制作过程的具体作用和使用方法,下面我们以"QQ2003"这个皮肤为例分别加以介绍.
2.
1config.
xml文件找到QQ安装路,以记事本的形式打开\qq\skin\QQ2003\config.
xml,具体程序如下:注意:粉色部分为用到的一些函数及需要对应的格式,双击粉色的函数将链接到第三章使用函数解析中与该函数对应的介绍部分,方便查看函数具体用法.
为方面大家熟悉程序,采用和两种形式对代码进行注释淡蓝色部分为皮肤中各部分的名称标识,在其后有对应的bmp等格式的图片(和config.
xml存放在同一路径下),双击淡蓝色的名称将链接到第四章中,以QQ2003为例显示对应的部分在皮肤中的具体图片,方便大家查看各ID在皮肤中对应的的具体位置边框和背景-->-->2.
2VBScript.
vbs文件VBScript.
vbs主负责QQ面板上各部分按钮的功能实现,在此实现与QQ之间的交互,同时还负责确定各部分图片在面板中的定位(如新皮肤中涉及到的调整按钮位置、皮肤提供的拉伸功能等需在此完成).
找到QQ安装路径,以记事本的形式打开\qq\skin\QQ2003\VBScript.
vbs,具体程序如下:注意:黑色粗体显示的Window.
LockPaint()和Window.
UnLockPaint()函数在程序的相应位置必须调用,不可省略为方面大家熟悉程序,采用'注释对代码进行注释'注释'定义全局变量DimBottomHeightDimCornerHeightDimUseNumDimUseStatusDimStatusIconDimshowbarDimPathDimstrQQMailTipBottomHeight=61'加载皮肤事件,包括:"QQ好友面板"、离线状态、QQ2003皮肤、显示侧边框,QQ号码和邮件数目subWindow_OnInit()FriendBar.
disabled=TrueTencentServerBar.
disabled=FalseMobileBar.
disabled=FalseBQQBar.
disabled=FalseCelltopcorner1.
visible=FalseStatusIcon="Offline.
ico"UseStatus="离线"Path="skins\\QQ2003\\"UseNum="0"strQQMailTip="0封未收"showbar=trueendsub'改变窗体大小事件,当QQ面板被上下左右拉缩、长短宽窄发生变化后,各部分的相对位置及皮肤制作过程中要改变的各部分和按钮的位置,需在此进行修改subWindow_OnSize(cx,cy)'在此处必须调用,不可省略Window.
LockPaint()BG.
width=cx-2BG.
Height=cytitle.
width=cxBGline.
height=cy-5'是否显示侧边框ifshowbar=TruethenBarBtns.
visible=TrueTencent.
visible=TrueBarFrame.
left=BarBtns.
left+BarBtns.
width-1QQMain.
left=44elseBarBtns.
visible=FalseTencent.
visible=FalseBarFrame.
left=4QQMain.
left=30endifQQBG.
left=QQ.
widthQQBG.
width=cx-QQ.
width-TitleBtns1.
width-QQ1.
widthTitleR1.
left=cx-TitleR1.
widthTitleBtns1.
left=TitleR1.
leftQQ1.
left=cx-TitleBtns1.
width-QQ1.
widthsysbottom.
top=cy-5sysbottom1.
top=sysbottom.
topsysbottom1.
left=cx-6sysbottom2.
top=cy-1sysbottom2.
width=cx-10DisableBarBtn1.
left=BarBtns.
left-1DisableBarBtn1.
top=cy-23DisableBarBtn2.
left=BarBtns.
left+2DisableBarBtn2.
top=cy-21Tencent.
top=cy-193'边框BarFrame.
top=title.
height+3BarFrame.
width=cx-3-BarFrame.
leftBarFrame.
height=cy-bottomheight-BarFrame.
top-3CellBG.
width=BarFrame.
width-4CellBG.
height=BarFrame.
height-2CellRight.
left=BarFrame.
width-2CellRight.
height=CellBG.
heightCellleft.
height=CellBG.
heightCelltopcorner.
left=BarFrame.
width-5CellRightcorner.
left=Celltopcorner.
leftCellRightcorner.
top=BarFrame.
height-7Cellleftcorner.
top=BarFrame.
height-7'QQ号码MyQQNum.
value=UseNum'QQ邮件数目QQMailTip.
label=strQQMailTip'MaxWidth=BarFrame.
width-9'offset=MyQQNum.
width-MaxWidth'ifoffset>0then'MyQQNum.
width=MyQQNum.
width-offset'endifBar1.
width=BarFrame.
width-6Bar1.
height=BarFrame.
height-37Bar2.
width=Bar1.
widthBar2.
height=Bar1.
heightBar3.
width=Bar1.
widthBar3.
height=Bar1.
heightBar4.
width=Bar1.
widthBar4.
height=Bar1.
height'第一排按钮BtnBG1_Left.
top=BarFrame.
top+BarFrame.
heightBtnBG1_Left.
left=BarFrame.
leftBtnBG1_Middle.
top=BtnBG1_Left.
topBtnBG1_Middle.
width=BarFrame.
width-6BtnBG1_Middle.
left=BtnBG1_Left.
left+3BtnBG1_Right.
top=BtnBG1_Left.
topBtnBG1_Right.
left=cx-6ChatBtn.
top=BtnBG1_Middle.
top+1ChatBtn.
Left=BtnBG1_Middle.
LeftPhoneBtn.
top=ChatBtn.
topPhoneBtn.
Left=ChatBtn.
Left+ChatBtn.
width+1searchBtn.
Top=ChatBtn.
topsearchBtn.
Left=PhoneBtn.
Left+PhoneBtn.
width+1searchBtn.
width=BtnBG1_Middle.
width-(searchBtn.
Left-BtnBG1_Middle.
Left)+18'第二排按钮BtnBG2_Left.
top=BtnBG1_Left.
top+21BtnBG2_Left.
left=BarFrame.
leftBtnBG2_Middle.
top=BtnBG2_Left.
topBtnBG2_Middle.
width=BtnBG1_Middle.
widthBtnBG2_Middle.
left=BtnBG2_Left.
left+3BtnBG2_Right.
top=BtnBG2_Left.
topBtnBG2_Right.
left=cx-6TeBtn.
top=BtnBG2_Middle.
top+1TeBtn.
Left=BtnBG2_Middle.
LeftGameBtn.
top=TeBtn.
topGameBtn.
left=TeBtn.
Left+TeBtn.
width+1SysMsgBtn.
top=TeBtn.
topSysMsgBtn.
Left=GameBtn.
Left+GameBtn.
width+2SysMsgBtn.
width=BtnBG2_Middle.
width-(SysMsgBtn.
Left-BtnBG2_Middle.
Left)+18'第三排按钮QQMain.
top=BtnBG2_Left.
top+20BtnBG3_Left.
Left=QQMain.
left+QQMain.
Width+1BtnBG3_Left.
top=BtnBG2_Left.
top+21BtnBG3_Right.
top=BtnBG3_Left.
topBtnBG3_Right.
left=cx-6BtnBG3_Middle.
top=BtnBG3_Left.
topBtnBG3_Middle.
Left=BtnBG3_Left.
Left+3BtnBG3_Middle.
width=BtnBG3_Right.
left-BtnBG3_Left.
Left-BtnBG3_Left.
widthStatusBtn.
top=BtnBG3_Right.
top+1StatusBtn.
left=BtnBG3_Left.
Left+2StatusBtn.
width=BtnBG3_Middle.
width+12'当QQ面板宽度较小时,不附加在线状态的汉字显示If60>StatusBtn.
widthThenStatusBtn.
Label=""Else'当QQ面板宽度较大时,附加在线状态的汉字显示StatusBtn.
Label=UseStatusEndIf'在此处必须调用,不可省略Window.
UnLockPaint()endsub'最小化和关闭按钮对应的事件submin1_onClick()Window.
ExeCommand1,2endsubsubclose1_onClick()Window.
ExeCommand1,3endsubsubmin2_onClick()Window.
ExeCommand1,2endsubsubclose2_onClick()Window.
ExeCommand1,3endsub'侧边四个按钮对应的事件'QQ好友板subFriendBar_onClick()Window.
LockPaint'CornerHeight=43'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=TrueTencentServerBar.
disabled=FalseMobileBar.
disabled=FalseBQQBar.
disabled=FalseWindow.
ExeCommand2,0Window.
UnLockPaint()endsub'腾讯服务面板subTencentServerBar_onClick()Window.
LockPaint'CornerHeight=43*2'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=FalseTencentServerBar.
disabled=TrueMobileBar.
disabled=FalseBQQBar.
disabled=FalseWindow.
ExeCommand2,1Window.
UnLockPaint()endsub'手机好友面板subMobileBar_onClick()Window.
LockPaint'CornerHeight=43*3'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=FalseTencentServerBar.
disabled=FalseMobileBar.
disabled=TrueBQQBar.
disabled=FalseWindow.
ExeCommand2,2Window.
UnLockPaint()endsub'企业QQ好友面板subBQQBar_onClick()Window.
LockPaint'CornerHeight=43*4'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=FalseTencentServerBar.
disabled=FalseMobileBar.
disabled=FalseBQQBar.
disabled=TrueWindow.
ExeCommand2,3Window.
UnLockPaint()endsubsubQQBall_onClick()Window.
ExeCommand3,1endsub'按钮组'和subChatBtn_onClick()Window.
ExeCommand4,1endsubsubPhoneBtn_onClick()Window.
ExeCommand4,2endsubsubsearchBtn_onClick()Window.
ExeCommand4,3endsubsubTeBtn_onClick()Window.
ExeCommand4,4endsubsubGameBtn_onClick()Window.
ExeCommand4,5endsubsubSysMsgBtn_onClick()Window.
ExeCommand4,6endsub'QQ系统菜单的相应事件subQQMain_onClick()'获取"QQ采单"按钮左上角的坐标,从而确定弹出系统菜单的具体位置s=CStr(QQMain.
Left)&".
"&CStr(QQMain.
Top)Window.
ExeCommand5,sendsub'选择QQ状态的相应事件subStatusBtn_onClick()'获取"QQ状态"按钮左上角的坐标,从而确定弹出状态菜单的具体位置s=CStr(StatusBtn.
Left)&".
"&CStr(StatusBtn.
Top)Window.
ExeCommand6,sendSub'收发QQ邮件的相应事件SubQQMailTip_onClick()Window.
ExeCommand7,1EndSub'隐藏侧边框subDisableBarBtn1_onClick()Window.
LockPaint()showbar=FalseQQ.
image=Path&"qq2003_1.
bmp"QQ.
width=45DisableBarBtn1.
visible=FalseDisableBarBtn2.
visible=TrueTitleR1.
visible=trueTitleBtns1.
visible=trueCelltopcorner1.
visible=trueWindow.
minWidth=104Window.
width=Window.
width-10Window.
UnLockPaint()endsub'展开侧边框subDisableBarBtn2_onClick()Window.
LockPaint()showbar=TrueQQ.
image=Path&"qq2003.
bmp"QQ.
width=54QQ1.
image=Path&"2003.
bmp"QQ1.
width=18DisableBarBtn1.
visible=TrueDisableBarBtn2.
visible=FalseTitleR1.
visible=TrueTitleBtns1.
visible=Truecx=Window.
widthCelltopcorner1.
visible=FalseWindow.
minWidth=114Window.
width=cx+10Window.
UnLockPaint()endSub'处理QQ程序发来的事件SubWindow_OnNotify(code,var)ifcode=1then'获取当前用户号码UseNum=varMyQQNum.
value=UseNum'MyQQNum.
width=BarFrame.
width-9elseifcode=2then'闪系统消息按钮var为1是开始闪,为2是停止if(var=1)thenSysMsgBtn.
StopFlashSysMsgBtn.
Flash30elseSysMsgBtn.
StopFlashendifelseifcode=3then'QQ当前状态,var为0,1,2,3是对应在线、暂时离开、隐身和下线,为4表示停止ifvar=0thenStatusBtn.
ico="Online.
ico"elseifvar=1thenStatusBtn.
ico="na.
ico"elseifvar=2thenStatusBtn.
ico="invisible.
ico"elseifvar=3thenStatusBtn.
ico="Offline.
ico"elseifvar=4thenStatusBtn.
ico=StatusIconendifelseifcode=4then'设置侧边框中QQ好友、手机、企业QQ等面板哪个在上面ifvar=0thenFriendBar_onClick()elseifvar=1thenTencentServerBar_onClick()elseifvar=2thenMobileBar_onClick()elseifvar=3thenBQQBar_onClick()endifelseifcode=5then'设置当前QQ的状态ifvar=10ThenUseStatus="在线"StatusIcon="Online.
ico"elseifvar=20ThenUseStatus="离线"StatusIcon="Offline.
ico"elseifvar=30ThenUseStatus="离开"StatusIcon="na.
ico"elseifvar=40ThenUseStatus="隐身"StatusIcon="invisible.
ico"endifStatusBtn.
ico=StatusIcon'当QQ面板宽度较小时,不附加在线状态的汉字显示If60>StatusBtn.
widthThenStatusBtn.
Label=""Else'当QQ面板宽度较大时,附加在线状态的汉字显示StatusBtn.
Label=UseStatusEndIf'MyQQStatus.
value=UseStatuselseifcode=6then'获取当前皮肤的路径Path=VarElseIfcode=7Then'改变QQMail的提示,没有邮件strQQMailTip=VarQQMailTip.
label=strQQMailTipElseIfcode=8Then'改变QQMail的提示,有新邮件strQQMailTip=VarQQMailTip.
label=strQQMailTipendifendsub2.
3skin.
ine文件登陆QQ2003后,根据此文件加载面板上的好友、群、陌生人和黑名单等分组folder,另外还为系统菜单、用户状态菜单、左、右键菜单等设定颜色.
注意:双击淡蓝色的名称将链接到第四章中,以QQ2003为例显示对应的部分在皮肤中的具体图片,方便大家查看在皮肤中对应的的具体位置为方便大家熟悉程序,采用;注释对代码进行注释[main]drawtitlebox=0;为好友、群、陌生人和黑名单等分组folder指定平时,鼠标放置、单击时分别对应图片[folder]tile=buttonD1.
bmplight_tile=buttonD2.
bmpdown_tile=buttonD3.
bmp;为好友、群、陌生人和黑名单等分组folder上显示的字体设置颜色color_red=0color_green=0color_blue=0;back_stretch设定背景色,为滚动球指定不同状态对应的图片[bar]leftspace=0rightspace=0topspace=0bottomspace=0back_stretch=cell_back.
bmpscrollup=buttonF1.
bmpscrollup_hover=buttonF2.
bmpscrollup_down=buttonF3.
bmpscrolldown=buttonE1.
bmpscrolldown_down=buttonE3.
bmp;为系统菜单、用户状态菜单、左右键菜单等设定颜色,logo为系统菜单左侧指定图片[menu]color_red=236color_green=242color_blue=252logo=logo.
bmp三、相关文件使用函数解析在config.
xml、VBScript.
vbs和Skin.
ini等文件中使用到一些函数,为了便于大家更好的理解各个文件在皮肤制作过程的具体作用和使用方法,下面我们首先介绍函数用法.
注:红色的是会激发的事件.
黑色的是只有在xml里才可以设置的属性.
蓝色的是即可以在xml里设置也可以在vb脚本设置的属性.
——窗体minWidth——最小宽度maxWidth——最大宽度minHeight——最小高度maxHeight——最大高度width——宽度height——高度backgroundColor——背景色clippingColor——镂空部分的颜色OnInit——加载皮肤事件OnSize——改变窗体大家事件OnNotify——处理QQ程序发来的事件——容器id——名称标识left——左边界位置top——上边界位置height——高度width——宽度zIndex——图层:指在所有的图片中所处的层次,具体值从0开始上升,值大的图片显示在值小的图片上面backgroundColor——背景颜色border——边界borderColor——边界颜色visible——可见……——按钮id——名称标识left——左边界位置top——上边界位置height——高度width——宽度zIndex——图层:指在所有的图片中所处的层次,具体值从0开始上升,值大的图片显示在值小的图片上面image——对应显示的bmp格式的图片hoverImage——鼠标移至该按钮上,显示的bmp格式的图片downImage——鼠标按下该按钮后,显示的bmp格式的图片disabledImage——无效时显示的bmp格式的图片transparencyColor——透明色toolTip——鼠标移至该按钮上,出现的具体提示信息horizontalAlignment——水平自动切分,具体方式还可以进一步选择切分的位置为leftrightcenterTit(平铺)stretch(拉伸)verticalAlignment——垂直自动切分,具体方式还可以进一步选择切分的位置为topbottom——对应显示的Icon格式的图片,与image在一个容器中不能共存ico(相对路径)horizontalAlignment——水平对齐方式leftrightcenterverticalAlignment——垂直对齐方式topbottomleftPadding——对应各种"对齐方式"的左平移,为负时则向右偏移topPadding——对应各种"对齐方式"的上平移,为负时则向下偏移——标签labelValue(在script中名为label)——标签显示内容color——颜色hoverColor——鼠标移至该标签上,对应显示的颜色fontFamily——字体fontSize——字体大小fontStyle——字体特殊效果,包括:normal(普通)italic(斜体)underlined(下划线)strikeout(删除线)italicUnderlined(斜体加下划线)fontWeight:0~1000——字体粗细horizontalAlignment——水平对齐方式leftrightcenterverticalAlignment——垂直对齐方式topbottomleftPadding——对应各种"对齐方式"的左平移,为负时则向右偏移topPadding——对应各种"对齐方式"的上平移,为负时则向下偏移cursor——指针,鼠标放置其上显示成的状态,如"手"等visible——可见disable——无效Flash——闪动StopFlash——停止闪动OnMouseEnteronMouseLeaveonMouseDownonClick——按钮组id——名称标识left——左边界位置top——上边界位置height——高度width——宽度zIndex——图层:指在所有的图片中所处的层次,具体值从0开始上升,值大的图片显示在值小的图片上面image——对应显示的bmp格式的图片hoverImage——鼠标移至该按钮上,对应显示的bmp格式的图片downImage——鼠标按下该按钮后,对应显示的bmp格式的图片disabledImage——无效时显示的bmp格式的图片mappingImage——为按钮组中不同的位置设定相关颜色,便于进一步用ButtonElement(按钮要素)中的mappingColor(见下面)为各按钮匹配对应位置的颜色,从而定位各按钮在组中的具体位置cursor——指针,鼠标放置其上显示成的状态,如"手"等visible——可见disable——无效——按钮要素id——名称标识mappingColor——在mappingImage中已经为按钮组中不同的位置设定相关颜色,通过mappingColor给各按钮匹配在mappingImag设定的不同颜色(要求用纯色),从而明确按钮组中各按钮的具体位置便于实现相应功能toolTip——鼠标移至该按钮上,出现的具体提示信息disable——无效onMouseEnteronMouseLeaveonMouseDownonClick——图片id——名称标识left——左边界位置top——上边界位置height——高度width——宽度zIndex——图层:指在所有的图片中所处的层次,具体值从0开始上升,值大的图片显示在值小的图片上面image——对应显示的bmp格式的图片icon——对应显示的Icon格式的图片,在picture中与image只能存在一个transparencyColor——透明horizontalAlignment——水平自动切分,具体方式还可以进一步选择切分的位置为leftrightcenterTit(平铺)stretch(拉伸)verticalAlignment——垂直自动切分,具体方式还可以进一步选择切分的位置为topbottomvisible——可见Flash——闪动StopFlash——停止闪动——文本id——名称标识left——左边界位置top——上边界位置height——高度width——宽度zIndex——图层:指在所有的图片中所处的层次,具体值从0开始上升,值大的图片显示在值小的图片上面value——具体内容color——颜色hoverColor——鼠标移至该文本上,对应显示的颜色fontFamily——字体fontSize——字体大小fontStyle——字体特殊效果,包括:normal(普通)italic(斜体)underlined(下划线)strikeout(删除线)italicUnderlined(斜体加下划线)fontWeight:0~1000——字体粗细autoSpaceactive——控制是否可以添加onClick事件cursor——指针,鼠标放置其上显示成的状态,如"手"等visible——可见link——控制是否为链接onClick——对话框id——名称标识itemID——与QQ其他程序关联时用到的具体标识left——左边界位置top——上边界位置height——高度width——宽度visible——可见四、对应的皮肤中的具体图片4.
1config.
xml和VBScript.
vbs用到的图片B_BarBtnsBarFrameBGBglineBtnBG1_LeftBtnBG1_MiddleBtnBG1_RightBtnBG2_LeftBtnBG2_MiddleBtnBG2_RightBtnBG3_LeftBtnBG3_MiddleBtnBG3_RightC_CellBGCellleftCelltopcornerCellRightCellRightcornerCellleftcornerCelltopcorner1ChatBtnD_DisableBarBtn2DisableBarBtn1G_GameBtnP_PhoneBtnQ_QQqq2003_1QQ1QQBallQQBall.
QQBGQQBG.
leftQQ.
widthQQMainQQMailTipS_SearchBtnStatusBtnSysbottomsysbottom1sysbottom2SysMsgBtnT_TeBtnTencentTitleBtns1TitleR14.
2Skin.
ini用到的图片Tilelight_tiledown_tileback_stretchscrollupscrollup_hoverscrollup_downscrolldownscrolldown_downlogo五、不规则皮肤制作QQ2003先后推出的一些不规则皮肤备受用户喜爱,我们在此以"快乐精灵"为例向大家介绍!
5.
1config.
xml文件找到QQ安装路,以记事本的形式打开\qq\skin\快乐精灵\config.
xml,具体程序如下:5.
2VBScript.
vbs文件VBScript.
vbs负责QQ面板上各部分按钮的功能实现,在此实现与QQ之间的交互,同时还负责确定各部分图片在面板中的定位,如在这个"快乐精灵"新皮肤中涉及到的调整按钮位置等,由于这个皮肤不提供拉伸功能,在图片、按钮等定位部分的代码比较简单.
找到QQ安装路,以记事本的形式打开\qq\skin\QQ2003\VBScript.
vbs,具体程序如下:'注释'定义全局变量DimBottomHeightDimCornerHeightDimUseNumDimPathDimstrQQMailTipDimnStatusBottomHeight=86'加载皮肤事件,包括:"QQ好友面板"、离线状态、QQ2003皮肤、显示侧边框,QQ号码和邮件数目subWindow_OnInit()FriendBar.
disabled=TrueTencentServerBar.
disabled=FalseMobileBar.
disabled=FalseBQQBar.
disabled=FalsenStatus=20Path="skins\\QQ2003\\"endsub'改变窗体大小以及具体定位事件,这个皮肤是不可以上下左右拉缩的,所以仅涉及到位置subWindow_OnSize(cx,cy)'在此处必须调用,不可省略Window.
LockPaint()title.
width=cx'QQ好友面板、腾讯服务面板、手机好友面板、企业QQ好友面板BarBtns.
visible=True'关闭和最小化按钮TitleR1.
left=170TitleR1.
top=48TitleBtns1.
left=170TitleBtns1.
TOP=48'—Bar1、Bar2、Bar3、Bar4分别对应"QQ好友"、"腾讯服务"、"手机好友"和"企业QQ好友"等面板Bar1.
width=75Bar1.
height=256Bar2.
width=Bar1.
widthBar2.
height=Bar1.
heightBar3.
width=Bar1.
widthBar3.
height=Bar1.
heightBar4.
width=Bar1.
widthBar4.
height=Bar1.
height'左面的按钮部分"进入聊天室"、"发送手机短讯"、"查找"ChatBtn.
top=229ChatBtn.
Left=28PhoneBtn.
top=251PhoneBtn.
Left=27searchBtn.
Top=274searchBtn.
Left=32'右面的按钮部分"QQ游戏"、"打开Tencent浏览器"、"系统菜单"TeBtn.
top=235TeBtn.
Left=169GameBtn.
top=213GameBtn.
left=164SysMsgBtn.
top=294SysMsgBtn.
Left=41'按钮"查看系统消息"和"更改状态"QQMain.
top=255QQMain.
left=169StatusBtn.
top=277StatusBtn.
left=165'在此处必须调用,不可省略Window.
UnLockPaint()endsub'最小化和关闭按钮对应的事件submin1_onClick()Window.
ExeCommand1,2endsubsubclose1_onClick()Window.
ExeCommand1,3endsubsubmin2_onClick()Window.
ExeCommand1,2endsubsubclose2_onClick()Window.
ExeCommand1,3endsub'侧边四个按钮对应的事件'QQ好友板subFriendBar_onClick()Window.
LockPaint'CornerHeight=43'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=TrueTencentServerBar.
disabled=FalseMobileBar.
disabled=FalseBQQBar.
disabled=FalseWindow.
ExeCommand2,0Window.
UnLockPaint()endsub'腾讯服务面板subTencentServerBar_onClick()Window.
LockPaint'CornerHeight=43*2'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=FalseTencentServerBar.
disabled=TrueMobileBar.
disabled=FalseBQQBar.
disabled=FalseWindow.
ExeCommand2,1Window.
UnLockPaint()endsub'手机好友面板subMobileBar_onClick()Window.
LockPaint'CornerHeight=43*3'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=FalseTencentServerBar.
disabled=FalseMobileBar.
disabled=TrueBQQBar.
disabled=FalseWindow.
ExeCommand2,2Window.
UnLockPaint()endsub'企业QQ好友面板subBQQBar_onClick()Window.
LockPaint'CornerHeight=43*4'corner.
top=BarBtns.
Top+CornerHeightFriendBar.
disabled=FalseTencentServerBar.
disabled=FalseMobileBar.
disabled=FalseBQQBar.
disabled=TrueWindow.
ExeCommand2,3Window.
UnLockPaint()endsubsubQQBall_onClick()Window.
ExeCommand3,1endsub'按钮部分"进入聊天室"、"发送手机短讯"、"查找"、"QQ游戏"、"打开Tencent浏览器"、"系统菜单"对应事件'进入聊天室subChatBtn_onClick()Window.
ExeCommand4,1endsub'发送手机短讯subPhoneBtn_onClick()Window.
ExeCommand4,2endsub'查找subsearchBtn_onClick()Window.
ExeCommand4,3endsub'打开Tencent浏览器subTeBtn_onClick()Window.
ExeCommand4,4endsub'QQ游戏subGameBtn_onClick()Window.
ExeCommand4,5endsub'查看系统消息subSysMsgBtn_onClick()Window.
ExeCommand4,6endsub'QQ系统菜单的相应事件subQQMain_onClick()'获取"QQ采单"按钮左上角的坐标,从而确定弹出系统菜单的具体位置s=CStr(QQMain.
Left)&".
"&CStr(QQMain.
Top)Window.
ExeCommand5,sendsub'选择QQ状态的相应事件subStatusBtn_onClick()'获取"QQ状态"按钮左上角的坐标,从而确定弹出状态菜单的具体位置s=CStr(StatusBtn.
Left)&".
"&CStr(StatusBtn.
Top)Window.
ExeCommand6,sendSub'收发QQ邮件的相应事件SubQQMailTip_onClick()Window.
ExeCommand7,1EndSub'处理QQ程序发来的事件SubWindow_OnNotify(code,var)ifcode=1then'获取当前用户号码elseifcode=2then'闪系统消息按钮var为1是开始闪,为2是停止if(var=1)thenSysMsgBtn.
StopFlashSysMsgBtn.
Flash30elseSysMsgBtn.
StopFlashendifelseifcode=3then'QQ当前状态,var为0,1,2,3是对应在线、暂时离开、隐身和下线,为4表示停止Window.
LockPaintAway.
visible=falseOffline.
visible=falseInvisible.
visible=falseifvar=0thenBG.
visible=Trueelseifvar=1thenAway.
visible=Trueelseifvar=2thenInvisible.
visible=Trueelseifvar=3thenOffline.
visible=Trueelseifvar=4thenifnStatus=10ThenBG.
visible=TrueelseifnStatus=20ThenOffline.
visible=TrueelseifnStatus=30ThenAway.
visible=TrueelseifnStatus=40ThenInvisible.
visible=TrueendifendifWindow.
UnLockPaint()elseifcode=4then'设置侧边框中QQ好友、手机、企业QQ等面板哪个在上面ifvar=0thenFriendBar_onClick()elseifvar=1thenTencentServerBar_onClick()elseifvar=2thenMobileBar_onClick()elseifvar=3thenBQQBar_onClick()endifelseifcode=5then'设置当前QQ的状态Window.
LockPaintAway.
visible=falseOffline.
visible=falseInvisible.
visible=falseifvar=10ThennStatus=10elseifvar=20ThennStatus=20Offline.
visible=Trueelseifvar=30ThennStatus=30Away.
visible=Trueelseifvar=40ThennStatus=40Invisible.
visible=TrueendifWindow.
UnLockPaint()elseifcode=6then'获取当前皮肤的路径Path=Varelseifcode=7then'改变QQMail的提示,没有邮件QQMailTip.
visible=falseelseifcode=8then'改变QQMail的提示,有新邮件QQMailTip.
visible=trueendifendsub六、皮肤制作总结篇前面几章我们已经详细的介绍了皮肤制作相关几个文件中各部分代码的具体作用,主要是为了大家更加得心应手、轻松自如的实现自己心仪的皮肤.
config.
xml:根据皮肤的功能划分成各部分后,为各部分ID(名称标识)在此定义好后,在VBScript.
vbs中会具体用到.
VBScript.
vbs:QQ面板上各部分按钮的功能实现,在此实现与QQ之间的交互,同时还负责确定各部分图片在面板中的定位(如新皮肤中涉及到的调整按钮位置、皮肤提供的拉伸功能等需在此完成).
Skin.
ini:登陆QQ2003后,根据此文件加载面板上的分组folder(如"我的好友"、"陌生人""黑名单"等)和为QQ菜单(也叫系统菜单,包括"个人设定"、"系统参数"等)等设定颜色.
熟悉了前面五章,大家可能已经发现,皮肤的制作仅仅需要根据自己的变动来改写对应文件的相关代码,比如在VBScript.
vbs中,涉及到和QQ之间交互、实现QQ功能的代码部分一般是无需变动的,因为无论皮肤怎样变化,每个按钮、菜单及对应功能都必须实现;另外在VBScript.
vbs的Window_OnSize(cx,cy)中,大家可能已经注意到QQ2003皮肤和快乐天使皮肤的差别较大,仔细对照会发现,前者代码比较复杂是因为提供了皮肤的拉缩功能,各部分定位的具体坐标是变动的;而"快乐天使"皮肤无需拉缩,各部分的坐标可以是固定的;另外,QQ2003皮肤和快乐天使皮肤的skin.
ini文件(登陆QQ2003后,根据此文件加载面板上的好友、群、陌生人和黑名单等分组folder,另外还为系统菜单、用户状态菜单、左、右键菜单等设定颜色)是一样的,所以大家对照一下看到skin.
ini涉及的各部分在两个皮肤中也是一样的——规律就在这里,大家总结出来就可以按照自己的设计挥洒自如了!
TmhHost是一家国内正规公司,具备ISP\ICP等资质,主营国内外云服务器及独立服务器租用业务,目前,商家新上香港三网CN2 GIA线路VPS及国内镇江BGP高防云主机,其中香港三网CN2 GIA线路最低每月45元起;同时对美国洛杉矶CN2 GIA线路高防及普通VPS进行优惠促销,优惠后美国洛杉矶Cera机房CN2 GIA线路高防VPS季付99元起。香港CN2 GIA安畅机房,三网回程CN2 ...
近期联通CUVIP的线路(AS4837线路)非常火热,妮妮云也推出了这类线路的套餐以及优惠,目前到国内优质线路排行大致如下:电信CN2 GIA>联通AS9929>联通AS4837>电信CN2 GT>普通线路,AS4837线路比起前两的优势就是带宽比较大,相对便宜一些,所以大家才能看到这个线路的带宽都非常高。妮妮云互联目前云服务器开放抽奖活动,每天开通前10台享3折优惠,另外...
Friendhosting发布了针对“系统管理日”(每年7月的最后一个星期五)的优惠活动,针对VPS主机提供55%的优惠(相当于四五折),支持1-6个月付款使用,首付折扣非永久,优惠后最低套餐首半年7.18欧元起。这是一家保加利亚主机商,成立于2009年4月,商家提供VDS和独立服务器租用等,数据中心目前可选美国洛杉矶、保加利亚、乌克兰、荷兰、拉脱维亚、捷克和波兰等8个地区机房。下面以最低套餐为例...