/* * services */ #define MS_CLNSE_INVOKE "CLN_Skinedit/Invoke" #define MS_CLNSE_FILLBYCURRENTSEL "CLN_Skinedit/FillByCurrentSel" /* * data structs */ typedef struct _tagImageItem { char szName[40]; HBITMAP hbm; BYTE bLeft, bRight, bTop, bBottom; // sizing margins BYTE alpha; DWORD dwFlags; HDC hdc; HBITMAP hbmOld; LONG inner_height, inner_width; LONG width, height; BLENDFUNCTION bf; BYTE bStretch; HBRUSH fillBrush; LONG glyphMetrics[4]; struct _tagImageItem *nextItem; } ImageItem; typedef struct _tagButtonItem { char szName[40]; HWND hWnd; LONG xOff, yOff; LONG width, height; ImageItem *imgNormal, *imgPressed, *imgHover; LONG normalGlyphMetrics[4]; LONG hoverGlyphMetrics[4]; LONG pressedGlyphMetrics[4]; DWORD dwFlags, dwStockFlags; DWORD uId; TCHAR szTip[256]; char szService[256]; char szModule[256], szSetting[256]; BYTE bValuePush[256], bValueRelease[256]; DWORD type; void (*pfnAction)(struct _tagButtonItem *item, HWND hwndDlg, struct MessageWindowData *dat, HWND hwndItem); void (*pfnCallback)(struct _tagButtonItem *item, HWND hwndDlg, struct MessageWindowData *dat, HWND hwndItem); TCHAR tszLabel[40]; struct _tagButtonItem *nextItem; } ButtonItem; typedef struct _tagButtonSet { ButtonItem *items; LONG left, top, right, bottom; // client area offsets, calculated from button layout } ButtonSet; typedef struct { char szName[40]; char szDBname[40]; int statusID; BYTE GRADIENT; BYTE CORNER; DWORD COLOR; DWORD COLOR2; BYTE COLOR2_TRANSPARENT; DWORD TEXTCOLOR; int ALPHA; int MARGIN_LEFT; int MARGIN_TOP; int MARGIN_RIGHT; int MARGIN_BOTTOM; BYTE IGNORED; DWORD BORDERSTYLE; ImageItem *imageItem; } StatusItems_t; typedef struct { BOOL bGRADIENT; BOOL bCORNER; BOOL bCOLOR; BOOL bCOLOR2; BOOL bCOLOR2_TRANSPARENT; BOOL bTEXTCOLOR; BOOL bALPHA; BOOL bMARGIN_LEFT; BOOL bMARGIN_TOP; BOOL bMARGIN_RIGHT; BOOL bMARGIN_BOTTOM; BOOL bIGNORED; BOOL bBORDERSTYLE; } ChangedSItems_t; typedef struct _tagSkinDescription { DWORD cbSize; StatusItems_t *StatusItems; int lastItem; int firstItem; char szModule[100]; HWND hWndParent, hWndTab; HWND hwndCLUI; HWND hwndSkinEdit; /* out param */ HWND hwndImageEdit; /* out param */ HMENU hMenuItems; void (*pfnSaveCompleteStruct)(void); void (*pfnClcOptionsChanged )(void); void* (*pfnMalloc)(unsigned int); void (*pfnFree)(void); void* (*pfnRealloc)(void *, unsigned int); void* reserved[20]; } SKINDESCRIPTION; // defines // FLAGS #define CORNER_NONE 0 #define CORNER_ACTIVE 1 #define CORNER_TL 2 #define CORNER_TR 4 #define CORNER_BR 8 #define CORNER_BL 16 #define GRADIENT_NONE 0 #define GRADIENT_ACTIVE 1 #define GRADIENT_LR 2 #define GRADIENT_RL 4 #define GRADIENT_TB 8 #define GRADIENT_BT 16 #define IMAGE_PERPIXEL_ALPHA 1 #define IMAGE_FLAG_DIVIDED 2 #define IMAGE_FILLSOLID 4 #define IMAGE_GLYPH 8 #define IMAGE_STRETCH_V 1 #define IMAGE_STRETCH_H 2 #define IMAGE_STRETCH_B 4 #define BUTTON_ISINTERNAL 1 #define BUTTON_ISTOGGLE 2 #define BUTTON_ISSERVICE 4 #define BUTTON_ISPROTOSERVICE 8 #define BUTTON_PASSHCONTACTW 16 #define BUTTON_PASSHCONTACTL 32 #define BUTTON_ISDBACTION 64 #define BUTTON_ISCONTACTDBACTION 128 #define BUTTON_DBACTIONONCONTACT 256 #define BUTTON_ISSIDEBAR 512 #define BUTTON_NORMALGLYPHISICON 1024 #define BUTTON_PRESSEDGLYPHISICON 2048 #define BUTTON_HOVERGLYPHISICON 4096 #define BUTTON_HASLABEL 8192 #define CLCDEFAULT_GRADIENT 0 #define CLCDEFAULT_CORNER 0 #define CLCDEFAULT_COLOR 0xd0d0d0 #define CLCDEFAULT_COLOR2 0xd0d0d0 #define CLCDEFAULT_TEXTCOLOR 0x000000 #define CLCDEFAULT_COLOR2_TRANSPARENT 1 #define CLCDEFAULT_ALPHA 100 #define CLCDEFAULT_MRGN_LEFT 0 #define CLCDEFAULT_MRGN_TOP 0 #define CLCDEFAULT_MRGN_RIGHT 0 #define CLCDEFAULT_MRGN_BOTTOM 0 #define CLCDEFAULT_IGNORE 1