ProtectOfDemon/源代码/skin/SkinPPWTL.h

238 lines
6.6 KiB
C
Raw Normal View History

2022-04-14 14:05:43 +00:00
#ifndef _SKINPPWTL_H_
#define _SKINPPWTL_H_
#ifdef _SKINPP_STATIC
#define SKINPPWTL_API
#else
#ifdef SKINPPWTL_EXPORTS
#define SKINPPWTL_API __declspec(dllexport)
#else
#define SKINPPWTL_API __declspec(dllimport)
#endif
#endif
#define WM_TOOLBARPAINTPRE (WM_USER + 802)
#define WM_TOOLBARPAINTEND (WM_USER + 803)
#define SM_LBUTTONUP (WM_USER + 804)
//<2F><>ť״̬
enum BUTTONSTATE
{
NORMAL = 0,
PRESS = 1,
DISABLE = 2,
HOT = 3,
FOCUS = 4,
LAST = 5
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum DRAWTYPE
{
BUTTON = 0,
SCROLLARROWUP = 1,
SCROLLARROWDOWN = 2,
SPLITTERBARHORZ = 3,
SPLITTERBARVERT = 4,
SPLITTERBARBORDER = 5,
LISTHEAD = 6
};
//<2F><><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum SKINOBJTYPE
{
DIALOGTYPE = 0,
BUTTONTYPE = 1,
CHECKBOXTYPE = 2,
RADIOBOXTYPE = 3,
STATICTYPE = 4,
TRACKBARTYPE = 5,
};
struct ListBoxItem
{
HIMAGELIST hImageList;
int nImageIndex;
ListBoxItem()
{
hImageList = NULL;
nImageIndex = -1;
}
};
#define REST_BITMAP 0x0001 //.bmp
#define REST_ICON 0x0002 //.ico
#define REST_CURSOR 0x0003 //.cur
#define REST_ANIMATE 0x0004 //.ani
typedef struct _ResourceInfo
{
HGDIOBJ hGdiObj;//[OUT]
DWORD dwType; //[OUT]
int nWidth; //[OUT]
int nHeight;//[OUT]
TCHAR szResImageName[_MAX_FNAME];//[IN]
BOOL bHorzSplit;//[IN]
int nLength;//[IN]
int nCount; //[IN]
int nIndex; //[IN]
_ResourceInfo()
{
hGdiObj = NULL;
dwType = REST_BITMAP;
nWidth = 0;
nHeight = 0;
_tcscpy(szResImageName,_T(""));
bHorzSplit = TRUE;
nLength = -1;
nCount = -1;
nIndex = -1;
}
}ResInfo,* PRESINFO;
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>
//SkinFile :Ƥ<><C6A4>·<EFBFBD><C2B7><><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*.ssk,Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>Ŀ¼<C4BF>е<EFBFBD>INI<4E>ļ<EFBFBD>.
//bFromIni :<3A>ò<EFBFBD><C3B2><EFBFBD>ָ<EFBFBD><D6B8>Ƥ<EFBFBD><C6A4><EFBFBD>ļ<EFBFBD><C4BC>Ǵ<EFBFBD>*.ssk<73><6B>ȡ,<2C><><EFBFBD>Ǵ<EFBFBD>INI<4E>ļ<EFBFBD><C4BC><EFBFBD>ȡ.
SKINPPWTL_API BOOL skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);
SKINPPWTL_API BOOL skinppLoadSkinFromRes(HINSTANCE hInstance,LPCTSTR szResourceName,
LPCTSTR szResourceType,TCHAR* szSkinFileName);
//<2F>Ƴ<EFBFBD>Ƥ<EFBFBD><C6A4>
SKINPPWTL_API BOOL skinppRemoveSkin();
//<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SKINPPWTL_API BOOL skinppExitSkin();
//<2F><><EFBFBD><EFBFBD>ListBox<6F>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>Ϣ
//hWnd : ListBox<6F>ؼ<EFBFBD><D8BC>ľ<EFBFBD><C4BE><EFBFBD>
//nIndex : Item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//pListBoxItem : Item<65><6D><EFBFBD>Ի<EFBFBD><D4BB>Ľṹ<C4BD><E1B9B9>Ϣ
SKINPPWTL_API void skinppSetListBoxItemDrawInfo(HWND hWnd,int nIndex,struct ListBoxItem* pListBoxItem);
//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>ɫ
//nColorIndex : Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
SKINPPWTL_API COLORREF skinppGetSkinSysColor(int nColorIndex);
//<2F><><EFBFBD><EFBFBD>WindowsϵͳĬ<CDB3>ϵ<EFBFBD><CFB5><EFBFBD>ɫ
//nColorIndex : Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
SKINPPWTL_API COLORREF skinppGetDefaultSysColor(int nColorIndex);
//hWnd : <20>Ի<EFBFBD><D4BB>򴰿ڵľ<DAB5><C4BE><EFBFBD>
//nResID : <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>ԴID
SKINPPWTL_API BOOL skinppSetWindowResID(HWND hWnd,int nResID);//[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]
SKINPPWTL_API BOOL skinppSetFreeDlgID(HWND hWnd,int nResID);
SKINPPWTL_API BOOL skinppSetSkinResID(HWND hWnd,int nResID);
//<2F><><EFBFBD><EFBFBD>ListHeader<65><72><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//hWnd : ListHeader<65>Ĵ<EFBFBD><C4B4>ھ<EFBFBD><DABE><EFBFBD>
//nSortColumn : Ҫ<><D2AA>ListHeader<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//bSortAscending: <20>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
SKINPPWTL_API void skinppSetListHeaderSortInfo(HWND hWnd,int nSortColumn,BOOL bSortAscending = TRUE);
//<2F>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>HDC<44><43><><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>״̬,<2C><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD>л<EFBFBD><D0BB><EFBFBD>.
//hdc :Ŀ<><C4BF>DC
//rect :<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//eDrawType :<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Ŀǰ֧<C7B0><D6A7>SPLITTERBARHORZ,SPLITTERBARVERT,SPLITTERBARBORDER
//nState :ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
SKINPPWTL_API void skinppDrawSkinObject(HDC hdc,RECT rect,DRAWTYPE eDrawType,int nState);
//ͨ<><CDA8><EFBFBD><EFBFBD>ԴID,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>͵<EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Դλͼ<CEBB><CDBC><EFBFBD><EFBFBD>
//nSkinObjType : Ƥ<><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ŀǰ֧<C7B0><D6A7> DIALOGTYPE,BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE
//nResID : <20><>ԴID
//nState : ״̬,<2C><>BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE<50><45>Ч
SKINPPWTL_API HBITMAP skinppGetResFromID(SKINOBJTYPE nSkinObjType,int nResID,int nState =0 );
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>򱳾<EFBFBD>,<2C>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Լ<EFBFBD><D4BC>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//hWnd : <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
//bErase : TRUE Ϊ<>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,FALSE ΪSkin++<2B><>,<2C><><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD><D0B5>ø÷<C3B8><C3B7><EFBFBD>,Skin++<2B><><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>򱳾<EFBFBD>.
SKINPPWTL_API void skinppSetDialogEraseBkgnd(HWND hWnd,BOOL bErase);
//<2F><><EFBFBD>öԻ<C3B6><D4BB>򱳾<EFBFBD><F2B1B3BE>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿؼ<D3BF><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//hWnd : <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//bNoClip : TRUEΪ<45><CEAA><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>,FALSEΪ<45><CEAA>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//bAllChild : TRUEΪ<45>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӶԻ<D3B6><D4BB>򶼼<EFBFBD><F2B6BCBC><EFBFBD>.
SKINPPWTL_API void skinppSetDialogBkClipRgn(HWND hWnd,BOOL bClip,BOOL bAllChild = TRUE);
//ͨ<><CDA8>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>λͼ
//szName : Ƥ<><C6A4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
//HBITMAP : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>е<EFBFBD>λͼ
SKINPPWTL_API HBITMAP skinppGetBitmapRes(LPCTSTR szName);
//ͨ<><CDA8><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Դ<EFBFBD><D4B4><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD><D6B8>
//szName : <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
//nSize : <20><>Դ<EFBFBD><D4B4>С
//pByte : <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>ط<EFBFBD>NULL<4C><4C>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>NULL
SKINPPWTL_API BYTE* skinppGetSkinResource(LPCTSTR szName,int& nSize);
//ͨ<><CDA8>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>λͼ<CEBB><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//szName : Ƥ<><C6A4><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
//nTopHeight : <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
//nBottomHeight : <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ׸<C4B5>
//nLeftWidth : <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//nRightWidth : <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҿ<EFBFBD>
SKINPPWTL_API BOOL skinppGetBitmapResRect(LPCTSTR szName,int& nTopHeight,int& nBottomHeight,
int& nLeftWidth,int& nRightWidth);
//<2F><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>Ƿ<EFBFBD><C7B7>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//hWnd : Ҫ<>Ի<EFBFBD><D4BB>Ĵ<EFBFBD><C4B4>ھ<EFBFBD><DABE><EFBFBD>
//bCustomDraw : TRUEΪ<45>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD>,FALSEΪ<45><CEAA><EFBFBD><EFBFBD>Skin++<2B><><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD>
SKINPPWTL_API void skinppSetCustomDraw(HWND hWnd,BOOL bCustomDraw);
//<2F><><EFBFBD>ò˵<C3B2><CBB5><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>ʶ
//hWnd : ӵ<>в˵<D0B2><CBB5>Ĵ<EFBFBD><C4B4>ھ<EFBFBD><DABE><EFBFBD>
//nSkinObjectID : <20>˵<EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD>ı<EFBFBD>ʶ
SKINPPWTL_API void skinppSetMenuSkinObjectID(HWND hWnd,int nSkinObjectID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>
//bSkin : TRUEΪ<45><CEAA><EFBFBD><EFBFBD>
SKINPPWTL_API void skinppSetSkinOwnerMenu(BOOL bSkin);
//<2F>Բ˵<D4B2><CBB5><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//hMenu : <20><EFBFBD><EBBBBB><EFBFBD>IJ˵<C4B2><CBB5><EFBFBD><EFBFBD><EFBFBD>
//bNoSkin : <20>Ƿ񻻷<C7B7>,TRUEΪ<45><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,FALSEΪ<45><CEAA><EFBFBD><EFBFBD>
SKINPPWTL_API void skinppSetDrawMenu(HMENU hMenu,BOOL bNoSkin);
//<2F><>ָ<EFBFBD><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ȥ<EFBFBD><C8A5>Ƥ<EFBFBD><C6A4>,<2C><><EFBFBD>ұ<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹʹ<CAB9><CAB9>SetSkinHwndҲ<64><D2B2><EFBFBD><EFBFBD><E1BBBB>.
//hWnd : ָ<><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4>ھ<EFBFBD><DABE><EFBFBD>
//bChildNoSkin : <20>Ƿ<EFBFBD><C7B7>Ըô<D4B8><C3B4><EFBFBD><EFBFBD>е<EFBFBD><D0B5>Ӵ<EFBFBD><D3B4><EFBFBD>ȥ<EFBFBD><C8A5>Ƥ<EFBFBD><C6A4>
SKINPPWTL_API void skinppSetNoSkinHwnd(HWND hWnd,BOOL bChildNoSkin = TRUE);
//<2F><>ָ<EFBFBD><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4>ڽ<EFBFBD><DABD>л<EFBFBD><D0BB><EFBFBD>
//hWnd : ָ<><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4>ھ<EFBFBD><DABE><EFBFBD>
//szClassName : Ҫ<><D2AA><EFBFBD><EFBFBD><E0BBAF>Skin<69><6E><EFBFBD><EFBFBD> WC_DIALOGBOX/WC_CONTROLBAR<41><52>
SKINPPWTL_API void skinppSetSkinHwnd(HWND hWnd,LPCTSTR szClassName = NULL);
//<2F><>ָ<EFBFBD><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʱȥ<CAB1><C8A5>Ƥ<EFBFBD><C6A4>,<2C><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>SetSkinHwnd<6E><64><EFBFBD><EFBFBD><EFBFBD>ٴλ<D9B4><CEBB><EFBFBD>
SKINPPWTL_API void skinppRemoveSkinHwnd(HWND hWnd);
//<2F>Ƕ<EFBFBD>SetNoSkinHwnd<6E>Ľ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>ʹ<EFBFBD><CAB9>SetNoSkinHwnd<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Debug<75><67><EFBFBD>Ķ<EFBFBD><C4B6>Դ<EFBFBD>
#define SETNOSKINHWND(x) {\
HWND w=(x).UnsubclassWindow();\
skinppSetNoSkinHwnd(w);\
(x).SubclassWindow(w);\
}
//<2F>Ƕ<EFBFBD>RemoveSkinHwnd<6E>Ľ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>ʹ<EFBFBD><CAB9>RemoveSkinHwnd<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Debug<75><67><EFBFBD>Ķ<EFBFBD><C4B6>Դ<EFBFBD>
#define REMOVESKINHWND(x){\
HWND w=(x).UnsubclassWindow();\
skinppRemoveSkinHwnd(w);\
(x).SubclassWindow(w);\
}
SKINPPWTL_API HGDIOBJ skinppGetResFromID(PRESINFO pResInfo);
#endif //_SKINPPWTL_H_