📄 skinppinc.h
字号:
//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// This is a part of the Skin++ Library
// Copyright (C) 2002-2006 YongJinSoft Ltd.(http://www.uipower.com)
// All rights reserved.
//
// This source code can be used, distributed or modified
// only under terms and conditions
// of the accompanying license agreement.
//*******************************************************************************
#ifndef __SKINPPINC_H
#define __SKINPPINC_H
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#pragma pack(push, 8)
//功能 : 加载皮肤
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppLoadSkin(
LPCTSTR strSkinFile, //皮肤路径
BOOL bWithoutHook = FALSE); //该参数指定加载皮肤时是否开启Hook功能.
//功能 : 设置是否进行Hook
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetHookMessage(
BOOL bHook, //True为开启Hook功能,False为关闭Hook功能.
DWORD dwHookStyle = 0x00000000L); //HS_MENU开启菜单自动换肤功能,
//HS_WINDOW开启窗口自动换肤功能,
//HS_NONE关闭所有Hook,HS_ALL开启所有自动换肤功能.
//功能 : 从资源加载皮肤
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppLoadSkinFromRes(
HINSTANCE hInstance, //资源实例句柄
LPCTSTR szResourceName, //资源名称
LPCTSTR szResourceType, //资源类型
LPCTSTR szSkinName, //皮肤名称
BOOL bWithoutHook = FALSE); //是否Hook
//功能 : 设置HookAPI的类型
//返回值: 返回当前API类型
DWORD __stdcall sppModifyHookAPIStyle(
DWORD dwRemove, //移除API类型
DWORD dwAdd); //添加API类型
//功能 : 获得当前API类型
//返回值: 返回当前API类型
DWORD __stdcall sppGetHookAPIStyle();
//功能 : 设置是否HookAPI
//返回值: 返回设置前的HookAPI状态
BOOL __stdcall sppSetHookAPI(
BOOL bHookAPI); //True为API Hook,False为去掉API Hook
//功能 : 获得HookAPI状态
//返回值: True表示当前为HookAPI,False表示当前没有HookAPI
BOOL __stdcall sppGetHookAPI();
//功能 : 移除皮肤
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppRemoveSkin();
//功能 : 设置标题栏自定义按钮是否显示
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetCustSysBtnVisible(
UINT uResID, //按钮的ResourceID
BOOL bVisible); //是否可见
//功能 : 指定自定义系统按钮的Check状态
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetCustSysBtnStatus(
UINT uResID, //自定义系统按钮的资源ID数值
BOOL bChecked = TRUE); //是否按下状态
//功能 : 设置皮肤色调
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppColorize(
COLORREF clr, //皮肤色调 如果clr==-1,就恢复原来的效果
double blend = 0.5, //混合透明度 0-1 , 0为无效果,1为无透明
BOOL bShowDialog = FALSE); //是否显示颜色选择对话框
//功能 : 弹出文件选择框选择皮肤
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSelectSkin();
//功能 : 在给定的HDC上,画位图。
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppDrawSkinBitmap(
HDC hdc, //目标DC
RECT rect, //绘制区域
HBITMAP hBitmap, //要绘制的位图句柄
BOOL bStretchAll, //是否拉伸
int nTopHeight = 0, //不被拉伸的顶高
int nBottomHeight = 0, //不被拉伸的底高
int nLeftWidth = 0, //不被拉伸的左宽
int nRightWidth = 0, //不被拉伸的右宽
COLORREF clrTrans = -1, //透明色
BOOL bTrans = FALSE //是否透明
);
//功能 : 在给定的HDC上,画位图
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppDrawSkinImage(
HDC hdc, //目标DC
RECT rect, //绘制区域
LPCTSTR lpszObjName, //要绘制皮肤图片名称
BOOL bStretchAll, //是否拉伸
int nLeftWidth, //不被拉伸的左宽
int nRightWidth, //不被拉伸的右宽
int nTopHeight, //不被拉伸的顶高
int nBottomHeight, //不被拉伸的底高
COLORREF clrTrans = -1, //透明色
BOOL bTrans = FALSE //是否透明
);
//功能 : 获得换肤后的系统颜色
//返回值: 成功返回当前皮肤的颜色,失败返回-1
COLORREF __stdcall sppGetSkinSysColor(
int nColorIndex); //要获取的颜色类型
//功能 : 获得Windows系统默认的颜色
//返回值: 成功返回Windows系统颜色,失败返回-1
COLORREF __stdcall sppGetDefaultSysColor(
int nColorIndex); //要获取的颜色类型
//功能 : 设置窗口的资源ID,该ID会在多语言版本中用到
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetWindowResID(
HWND hWnd, //对话框窗口的句柄
int nResID); //对话框资源ID
//功能 : 获得窗口的资源ID
//返回值: 成功返回资源ID,失败返回-1
int __stdcall sppGetWindowResID(
HWND hWnd); //对话框窗口的句柄
//功能 : 设置异型窗口的资源ID
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetFreeWindowID(
HWND hWnd, //对话框窗口的句柄
int nResID); //资源ID
//功能 : 获得异型窗口的资源ID
//返回值: 成功返回资源ID,失败返回-1
int __stdcall sppGetFreeWindowID(
HWND hWnd); //对话框窗口的句柄
//功能 : 设置窗口自画是否自己来处理,该方法用于自画部分需要自己处理的情况下
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetCustomDraw(
HWND hWnd, //自画窗口句柄
BOOL bCustomDraw); //TRUE为自己处理自画,FALSE为交给Skin++处理自画
//功能 : 设置窗口是否计算RGN区域
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetRgnEnable(
HWND hWnd, //窗口句柄
BOOL bRgnEnable); //True为计算区域,FALSE为不计算区域
//功能 : 设置ListHeader窗口的排序信息
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetListHeaderSortInfo(
HWND hWnd, //ListHeader的窗口句柄
int nSortColumn, //要对ListHeader排序的列的索引
BOOL bSortAscending = TRUE); //是否为升序
//功能 : 设置是否自己画对话框背景,该方法用在需要自己对背景进行处理的情况下.
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetDialogEraseBkgnd(
HWND hWnd, //对话框句柄
BOOL bErase); //TRUE 为自己画背景,FALSE 为Skin++画,
//如果没有调用该方法,Skin++将画对话框背景.
//功能 : 设置对话框背景是否剪切子控件区域
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetDialogBkClipRgn(
HWND hWnd, //对话框句柄
BOOL bClip, //TRUE为不需要剪切,FALSE为需要剪切区域
BOOL bAllChild = TRUE); //TRUE为该窗体的所有子对话框都剪切.
//功能 : 设置按钮的提示
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetButtonTooltip(
HWND hWnd, //按钮句柄
LPCTSTR szTooltip); //按钮提示文本
//功能 : 对指定的窗口去掉皮肤,并且保证不会再被换肤,即使使用SetSkinHwnd也不会换肤.
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetNoSkinHwnd(
HWND hWnd, //窗口句柄
BOOL bChildNoSkin = TRUE); //是否对该窗口中的子窗口去掉皮肤
//功能 : 对指定的窗口进行换肤
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppSetSkinHwnd(
HWND hWnd, //窗口句柄
LPCTSTR szClassName = NULL, //要子类化的Skin类型 WC_DIALOGBOX/WC_CONTROLBAR等
BOOL bChildSkin = TRUE); //是否对该窗口中的子窗口加上皮肤
//功能 : 对指定的窗口临时去掉皮肤,可以通过SetSkinHwnd进行再次换肤
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppRemoveSkinHwnd(
HWND hWnd); //窗口句柄
//功能 : 获得Skin++的系统Metrics,作用同Windows API函数GetSystemMetrics,
// 取得Skin++实际的标题栏高度,菜单条高度等数值
//返回值: 成功返回Skin++的Metrics,失败返回-1
int __stdcall sppGetSystemMetrics(
HWND hWnd, //窗体句柄
int nIndex); //参数同GetSystemMetrics
//功能 : 多线程换肤用
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppInitializeSkin();
//功能 : 退出界面库,做清理工作。
//返回值: 成功返回True,失败返回False
BOOL __stdcall sppExitSkin();
//功能 : 设置窗口是否刷新
//返回值 : 成功返回True,失败返回False
//备注 : 在数据窗口添加数据时会导致刷新比较慢,
//这个时候可以用这个接口锁定刷新,数据插入完成后需重新开启刷新
BOOL __stdcall sppSetRedraw(
HWND hWnd, //窗口句柄
BOOL bRedraw); //True为刷新,False为锁定刷新
//功能 : 验证Skin++版本是否与当前程序的开发工具相匹配
//返回值 : 成功返回True,失败返回False
BOOL _stdcall sppValidateDevTools();
//[For PowerBuilder]
//功能 : 设置Tab控件的标签页的位置
//返回值 : 成功返回True,失败返回False
enum TABPOSITION
{
TABPOS_UNKNOWN = 0x00,
TABPOS_TABSONTOP = 0x01,
TABPOS_TABSONTOPANDBOTTOM = 0x02,
TABPOS_TABSONLEFT = 0x03,
TABPOS_TABSONLEFTANDRIGHT = 0x04,
TABPOS_TABSONBOTTOM = 0x05,
TABPOS_TABSONBOTTOMANDTOP = 0x06,
TABPOS_TABSONRIGHT = 0x07,
TABPOS_TABSONRIGHTANDLEFT = 0x08
};
BOOL __stdcall sppSetTabCtrlPosition(
HWND hWnd, //Tab控件的窗口句柄
TABPOSITION enumPosition, //TABPOSITION的枚举值
BOOL bPictureOnRight = FALSE); //图标是否显示在文本的右侧
//[For PowerBuilder]
//功能 : 设置Tab控件的标签页显示的索引值
//返回值 : 成功返回True,失败返回False
BOOL __stdcall sppSetTabCtrlItemsStatus(
HWND hWnd, //Tab控件的窗口句柄
int* pIndexs, //显示标签页的Index集合
int nCount //显示标签页的总个数
);
//功能 : 是对SetNoSkinHwnd的进一步处理,可以解决使用sppSetNoSkinHwnd引起的Debug版的断言错
#define SETNOSKINHWND(x) {\
HWND w=(x).UnsubclassWindow();\
sppSetNoSkinHwnd(w);\
(x).SubclassWindow(w);\
}
#ifdef _SKINPP_DYNAMICCALLDLL
class CSkinPPDynamicCallDll
{
public:
typedef BOOL (__stdcall *SPPLOADSKIN)(LPCTSTR strSkinFile,BOOL bWithoutHook);
typedef BOOL (__stdcall *SPPSETHOOKMESSAGE)(BOOL bHook,DWORD dwHookStyle);
typedef BOOL (__stdcall *SPPLOADSKINFROMRES)(HINSTANCE hInstance,LPCTSTR szResourceName,LPCTSTR szResourceType,LPCTSTR szSkinName,BOOL bWithoutHook);
typedef DWORD (__stdcall *SPPMODIFYHOOKAPISTYLE)(DWORD dwRemove,DWORD dwAdd);
typedef DWORD (__stdcall *SPPGETHOOKAPISTYLE)();
typedef BOOL (__stdcall *SPPSETHOOKAPI)(BOOL bHookAPI);
typedef BOOL (__stdcall *SPPGETHOOKAPI)();
typedef BOOL (__stdcall *SPPREMOVESKIN)();
typedef BOOL (__stdcall *SPPSETCUSTSYSBTNVISIBLE)(UINT uResID,BOOL bVisible);
typedef BOOL (__stdcall *SPPSETCUSTSYSBTNSTATUS)(UINT uResID,BOOL bChecked);
typedef BOOL (__stdcall *SPPCOLORIZE)(COLORREF clr,double blend,BOOL bShowDialog);
typedef BOOL (__stdcall *SPPSELECTSKIN)();
typedef BOOL (__stdcall *SPPDRAWSKINBITMAP)(HDC hdc,RECT rect,HBITMAP hBitmap,BOOL bStretchAll,
int nTopHeight,int nBottomHeight,int nLeftWidth,
int nRightWidth,COLORREF clrTrans,BOOL bTrans);
typedef BOOL (__stdcall *SPPDRAWSKINIMAGE)(HDC hdc,RECT rect,LPCTSTR lpszObjName,BOOL bStretchAll,
int nLeftWidth,int nRightWidth,int nTopHeight,
int nBottomHeight,COLORREF clrTrans,BOOL bTrans);
typedef COLORREF (__stdcall *SPPGETSKINSYSCOLOR)(int nColorIndex);
typedef COLORREF (__stdcall *SPPGETDEFAULTSYSCOLOR)();
typedef BOOL (__stdcall *SPPSETWINDOWRESID)(HWND hWnd,int nResID);
typedef int (__stdcall *SPPGETWINDOWRESID)(HWND hWnd);
typedef BOOL (__stdcall *SPPSETFREEWINDOWID)(HWND hWnd,int nResID);
typedef int (__stdcall *SPPGETFREEWINDOWID)(HWND hWnd);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -