属性->链 " />

属性->链"/>

自定义皮肤

更新时间:2023-03-16 07:51:37 阅读: 评论:0

曹操生平简介-游泳衣品牌排行榜

自定义皮肤
2023年3月16日发(作者:心情的句子)

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第1页

Skin++软件换肤套件Ver2.0

使用手册

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第2页

一.加载Skin++

初始化Skin++库,并且加载皮肤文件

这个必须写在InitializeApp函数的第一行

1.在(VC7)"项目->属性->链接器->输入->附加依赖项"中加入

或在(VC6)"Project->Settings->Link->Object/library"中加入

2.在你的程序中包含头文件

#inlcude"SkinPPWTL.h"

3.在程序中加入初始化语句InitInstance()

skinppLoadSkin(_T(""));

注:以上假定,SkinPPWTL.h,都在当前目录,如果不是请更改路径设置。

二.卸载Skin++

反安装Skin++库,进行必要的Skin++库的清理工作。

这个必须写在ExitInstance函数的第一行

在程序的卸载函数中加入ExitInstance()

skinppExitSkin();

三.更换皮肤

加载皮肤资源,进行切换皮肤。

该接口用在需要进行皮肤切换的地方

执行函数LoadSkin即可以实现动态换肤

skinppLoadSkin(_T(""));

四、为窗口主菜单设置图标

第一个参数是菜单ID,

第二个参数是用户的图像列表句柄

第三个参数是图标在图像列表中的Index

BOOLskinppSetMenuItemImage(UINTnID,HIMAGELISThImgList,intnIndex);

五、获得主窗口的菜单

HMENUskinppGetMainFrameMenu(void);

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第3页

六、强制Skin++对某个窗口不进行换肤。保持原有风格。

voidskinppSetNoSkinHwnd(HWNDhWnd);

七.使用分隔条窗体的应注意的问题

您必须SKINPLUSPLUS_SPLITTER()和SKINPLUSPLUS_INIT_SPLITTER(m_wndSplitter)宏

注:SKINPLUSPLUS_INIT_SPLITTER一般传入分隔条对象m_wndSplitter

例如:

......................

SKINPLUSPLUS_SPLITTER()

intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)

{

SKINPLUSPLUS_INIT_SPLITTER(m_wndSplitter);

......................

}

八.具体Skin++SDK接口如下:

8.1加载皮肤

//SkinFile:皮肤路径,注意可以是Zip包名称,也可以是皮肤目录中的INI文件.

//bFromIni:该参数指定皮肤文件是从Zip包读取还是从INI文件读取.

SKINPPWTL_APIBOOLskinppLoadSkin(TCHAR*SkinFile,BOOLbFromIni=FALSE);

8.2移除皮肤

SKINPPWTL_APIBOOLskinppRemoveSkin();

8.3根据菜单项ID号,和图像列表的索引,来主菜单项设置菜单项图标。

//nID:菜单项ID

//hImgList:菜单图标所在的图像列表句柄

//nIndex:菜单图标在图像列表中的索引

SKINPPWTL_APIBOOLskinppSetMenuItemImage(UINTnID,HIMAGELISThImgList,intnIndex);

8.4设置右键菜单是否按主菜单样子画

//hMenu:菜单句柄

//bDraw:TRUE为按主菜单样子画,FALSE为按默认方式画

SKINPPWTL_APIvoidskinppSetDrawMenu(HMENUhMenu,BOOLbDraw);

8.5获得当前主框架的菜单句柄.目前返回为NULL.

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第4页

SKINPPWTL_APIHMENUskinppGetMainFrameMenu(void);

8.6在给定的HDC上,指定相应的绘制类型和状态,在相应的矩形区域中进行绘制.

//hdc:目标DC

//rect:绘制区域

//eDrawType:绘制类型,目前支持BUTTON,SCROLLARROWUP,SCROLLARROWDOWN,

//SPLITTERBARHORZ,SPLITTERBARVERT,LISTHEAD

//nState:选择绘制状态,对Button类型有效,其值同BUTTONSTATE中的定义

SKINPPWTL_APIvoidskinppDrawSkinObject(HDChdc,RECTrect,DRAWTYPEeDrawType,intnState);

8.7在给定的HDC上,画位图。

//hdc:目标DC

//rect:绘制区域

//hBitmap:要绘制的位图

//nTopHeight:不被拉伸的顶高

//nBottomHeight:不被拉伸的底高

//nLeftWidth:不被拉伸的左宽

//nRightWidth:不被拉伸的右宽

//colTrans:透明色

//bTrans:是否透明

//返回值:无

SKINPPWTL_APIvoidskinppDrawSkinBitmap(HDChdc,RECTrect,HBITMAPhBitmap,

intnTopHeight=0,intnBottomHeight=0,

intnLeftWidth=0,intnRightWidth=0,

COLORREFcolTrans=-1,BOOLbTrans=FALSE);

8.8获得换肤后的系统颜色

//nColorIndex:要获取的颜色类型

SKINPPWTL_APICOLORREFskinppGetSkinSysColor(intnColorIndex);

//获得Windows系统默认的颜色

//nColorIndex:要获取的颜色类型

SKINPPWTL_APICOLORREFskinppGetDefaultSysColor(intnColorIndex);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

8.9设置对话框窗口的资源ID,该ID会在多语言版本中用到

//hWnd:对话框窗口的句柄

//nResID:对话框资源ID

SKINPPWTL_APIBOOLskinppSetWindowResID(HWNDhWnd,intnResID);//[多语言]

8.10设置当前的多语言版本

//nLangID:多语言版本ID.

//例如:英文为1033等,具体要根据语言文件(*.lng)中的描述来定.

SKINPPWTL_APIvoidskinppSetLanguageID(intnLangID);//[多语言]

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第5页

//根据语言文件(*.lng)键值获得相应的字符串

//szValue:多语文件中的键值

//szResult:返回的字符串

//nLength:szResult的长度

//返回值:返回字符串的长度

SKINPPWTL_APIintskinppLoadLanguageStr(LPCTSTRszValue,TCHAR*szResult,intnLength);//[多语言]

8.11根据资源ID获得语言文件(*.lng)中相应的字符串

//nResID:资源ID

//szResult:返回的字符串

//nLength:szResult的长度

//返回值:返回字符串的长度

SKINPPWTL_APIintskinppLoadString(intnResID,TCHAR*szResult,intnLength);//[多语言]

8.12设置弹出菜单的资源ID以对弹出菜单的多语言支持.(该操作不包括窗口的主菜单)

//用在TrackPopupMenu/TrackPopupMenuEx的上一句.

//hMenu:弹出菜单的句柄

//lMenuID:资源ID

SKINPPWTL_APIvoidskinppSetTrackPopupMenuID(HMENUhMenu,LONGlMenuID);//[多语言]

8.13设置ListHeader某一项的资源ID

//hWnd:ListHeader的窗口句柄

//nItem:ListHeader某一项的索引

//lItemID:资源ID

SKINPPWTL_APIvoidskinppSetListHeaderCtrlItemID(HWNDhWnd,intnItem,longlItemID);//[多语言]

8.14获得多语言菜单

SKINPPWTL_APIHMENUskinppGetMultiLangMenu();

//多语言部分结束

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

8.15设置ListHeader窗口的排序信息

//hWnd:ListHeader的窗口句柄

//nSortColumn:要对ListHeader排序的列的索引

//bSortAscending:是否为升序

SKINPPWTL_APIvoidskinppSetListHeaderSortInfo(HWNDhWnd,intnSortColumn,BOOLbSortAscending=

TRUE);

8.16通过资源ID,获得相应类型的皮肤资源位图句柄

//nSkinObjType:皮肤类型,目前支持DIALOGTYPE,BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE

//nResID:资源ID

//nState:状态,对BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE有效

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第6页

SKINPPWTL_APIHBITMAPskinppGetResFromID(SKINOBJTYPEnSkinObjType,intnResID,intnState=0);

8.17获得位图资源的宽度和高度

//hBitmap:位图资源的句柄

//nWidth:返回位图的宽度

//nHeight:返回位图的高度

SKINPPWTL_APIvoidskinppGetBitmapSize(HBITMAPhBitmap,int&nWidth,int&nHeight);

8.18从Skin库中获得Icon资源

//szIconFileName:Icon文件名称

SKINPPWTL_APIHICONskinppGetIconFromRes(LPTSTRszIconFileName);

8.19根据资源ID获得皮肤中的图像列表句柄

//nResID:资源ID

//返回图像列表句柄HIMAGELIST,如果没有找到则返回NULL

SKINPPWTL_APIHIMAGELISTskinppGetImageListFromID(intnResID);

8.20设置指定窗口的背景HDC,实现子控件的透明效果

//hWnd:指定的窗口句柄

//hDC:窗口的背景HDC

SKINPPWTL_APIvoidskinppSetBackgroundDC(HWNDhWnd,HDChDC);

8.21设置Tab页的自定义皮肤

//hWnd:Tab控件的句柄

//nIndex:Tab页的索引

//nResID:和Tab页相关联的子对话框的ID

SKINPPWTL_APIvoidskinppSetTabItemImageID(HWNDhWnd,intnIndex,intnResID);

8.22根据位图和透明色,获得不规则区域

//hBmp:指定的位图句柄

//color:指定的透明色

//HRGN:返回不规则区域

SKINPPWTL_APIHRGNskinppCreateRgnFromFile(HBITMAPhBmp,COLORREFcolor);

8.23设置是否自己画对话框背景,该方法用在需要自己对背景进行处理的情况下.

//hWnd:对话框的句柄

//bEra:TRUE为自己画背景,FALSE为Skin++画,如果没有调用该方法,Skin++将画对话框背景.

SKINPPWTL_APIvoidskinppSetDialogEraBkgnd(HWNDhWnd,BOOLbEra);

8.24设置对话框背景是否剪切子控件区域。

//hWnd:对话框句柄

//bNoClip:TRUE为不需要剪切,FALSE为需要剪切区域

//bAllChild:TRUE为该窗体的所有子对话框都剪切.

SKINPPWTL_APIvoidskinppSetDialogBkClipRgn(HWNDhWnd,BOOLbClip,BOOLbAllChild=TRUE);

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第7页

//设置是否画按钮上的文本,该方法用在需要对按钮文本不画的情况下.

//hWnd:按钮句柄

//bNoDraw:TRUE为不画按钮文本,FALSE为画按钮文本.

SKINPPWTL_APIvoidskinppSetNoDrawText(HWNDhWnd,BOOLbNoDraw);

8.25通过皮肤资源名称获得皮肤资源中位图

//szName:皮肤资源名称

//HBITMAP:返回资源中的位图

SKINPPWTL_APIHBITMAPskinppGetBitmapRes(LPCTSTRszName);

8.26通过资源名称取资源的内存指针

//szName:资源名称

//nSize:资源大小

//pByte:返回值,成功返回非NULL,失败返回NULL

SKINPPWTL_APIBYTE*skinppGetSkinResource(LPCTSTRszName,int&nSize);

8.27通过皮肤资源的名称获得位图不被拉伸的区域值

//szName:皮肤资源名称

//nTopHeight:返回不被拉伸的顶高

//nBottomHeight:返回不被拉伸的底高

//nLeftWidth:返回不被拉伸的左宽

//nRightWidth:返回不被拉伸的右宽

SKINPPWTL_APIBOOLskinppGetBitmapResRect(LPCTSTRszName,int&nTopHeight,int&nBottomHeight,

int&nLeftWidth,int&nRightWidth);

8.28根据资源ID设置Static控件的字体和大小

//nResID:资源ID

//szFontName:字体名称

//nFontSize:字体大小

SKINPPWTL_APIBOOLskinppSetStaticFont(intnResID,LPCTSTRszFontName=_T("Arial"),intnFontSize=

10);

8.29根据资源ID设置Static中文本的对齐方式

//nResID:资源ID

//nAlign:0-垂直居左;1-垂直居中;2-垂直居右

SKINPPWTL_APIBOOLskinppSetStaticTextAlign(intnResID,intnAlign=0);

8.30根据资源ID设置Static中文本的颜色

//nResID:资源ID

//clrText:文本颜色

SKINPPWTL_APIBOOLskinppSetStaticTextColor(intnResID,COLORREFclrText=RGB(0,0,0));

//设置窗口自画是否自己来处理,该方法用于自画部分需要自己处理的情况下

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第8页

//hWnd:要自画的窗口句柄

//bCustomDraw:TRUE为自己处理自画,FALSE为交给Skin++处理自画

SKINPPWTL_APIvoidskinppSetCustomDraw(HWNDhWnd,BOOLbCustomDraw);

8.31设置按钮的声音.

//hWnd:按钮句柄

//szMove:鼠标移上去的声音

//szPress:鼠标按下去的声音

SKINPPWTL_APIvoidskinppSetButtonSounds(HWNDhWnd,LPCTSTRszMove,LPCTSTRszPress);

8.32设置按钮的提示

//hWnd:按钮句柄

//szTooltip:按钮提示文本

SKINPPWTL_APIvoidskinppSetButtonTooltip(HWNDhWnd,LPCTSTRszTooltip);

8.33设置ListBox控件的自画信息

//hWnd:ListBox控件的句柄

//nIndex:Item项的索引

//pListBoxItem:Item项自画的结构信息

SKINPPWTL_APIvoidskinppSetListBoxItemDrawInfo(HWNDhWnd,intnIndex,structListBoxItem*

pListBoxItem);

8.34设置状态背景透明

//hWndStatusBar:状态条控件句柄

//bTransparent:TRUE为透明,默认为不透明

SKINPPWTL_APIvoidskinppSetStatusBarTransparent(HWNDhWndStatusBar,BOOLbTransparent);

8.35设置菜单的皮肤标识

//hWnd:拥有菜单的窗口句柄

//nSkinObjectID:菜单皮肤的标识

SKINPPWTL_APIvoidskinppSetMenuSkinObjectID(HWNDhWnd,intnSkinObjectID);

8.36对指定的窗口去掉皮肤,并且保证不会再被换肤,即使使用SetSkinHwnd也不会换肤.

//hWnd:指定的窗口句柄

//bChildNoSkin:是否对该窗口中的子窗口去掉皮肤

SKINPPWTL_APIvoidskinppSetNoSkinHwnd(HWNDhWnd,BOOLbChildNoSkin=TRUE);

8.37对指定的窗口进行换肤

//hWnd:指定的窗口句柄

//szClassName:要子类化的Skin类型WC_DIALOGBOX/WC_CONTROLBAR等

SKINPPWTL_APIvoidskinppSetSkinHwnd(HWNDhWnd,LPCTSTRszClassName=NULL);

8.38对指定的窗口临时去掉皮肤,可以通过SetSkinHwnd进行再次换肤

SKINPPWTL_APIvoidskinppRemoveSkinHwnd(HWNDhWnd);

Skin++软件换肤套件Ver2.0使用手册

上海勇进软件有限公司第9页

8.39是对SetNoSkinHwnd的进一步处理,可以解决使用SetNoSkinHwnd引起的Debug版的断言错

#defineSETNOSKINHWND(x){

HWNDw=(x).UnsubclassWindow();

skinppSetNoSkinHwnd(w);

(x).SubclassWindow(w);

}

8.40是对RemoveSkinHwnd的进一步处理,可以解决使用RemoveSkinHwnd引起的Debug版的断言错

#defineREMOVESKINHWND(x){

HWNDw=(x).UnsubclassWindow();

skinppRemoveSkinHwnd(w);

(x).SubclassWindow(w);

}

本文发布于:2023-03-16 07:51:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678924297273609.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:自定义皮肤.doc

本文 PDF 下载地址:自定义皮肤.pdf

下一篇:返回列表
标签:自定义皮肤
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图