属性->链 " />
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 条评论) |