/*************************************************************************** // This is a part of the SkinMagic SDK library. // Copyright (C) 2009-2002 Appspeed Inc. // All rights reserved. // // This source code is only intended as a supplement to the // SkinMagic SDK Reference and related electronic documentation // provided with the library. // See these sources for detailed information regarding the // SkinMagic SDK product. // SkinMagicLib SDK is a library designed for C/C++ programmer, // you can add the most popular function of changing skin to your // application with the API supplied by this library. SkinMagic // is picture-based skin system, you can power your application // with skin-changeable with simple call of several functions. // And with the skin editor of SkinMagicBuilder, you can customize // your own skin. *****************************************************************************/ #ifndef _SKINMAGICLIB_H__ #define _SKINMAGICLIB_H__ #include #include //Skinmagic error code #define SMEC_OK 0 #define SMEC_REGISTERWINDOW 1 //fail to register windows class #define SMEC_MESSAGEHOOK 2 //fail to set message hook #define SMEC_KEYHOOK 3 //fail to set keyboard hook #define SMEC_FILENOTFOUND 4 //not find the file #define SMEC_DECOMPRESSERROR 5 //fail to decompress skin file #define SMEC_HEADERERROR 6 //skin file header error #define SMEC_SKINVERSIONERROR 7 //skin file version not match #define SMEC_OBJECTNOTFOUND 8 //obect not found #define SMEC_OBJECTTYPEUNMATCH 9 //Object type not match #define SMEC_IMAGESIZEERROR 10 //Image size error #define SMEC_CREATEIMAGELISTFAIL 11 //fail to create image list object #define SMEC_NOTIMPLEMENT 12 //The function not implement #define SMEC_PARAMETERERROR 13 //the function parameter error #define SMEC_INITSCROLLBARFAIL 14 //fail to skin scrollbar #define SMEC_LOADRESOURCEFAIL 15 //fail to load the resource #define SMEC_FINDRESOURCEFAIL 16 //fail to find the resource #define SMEC_WINDOWSXPNOTCOMPATIBLE 17 //not compatible with Windows XP #define SMEC_OUTOFMEMORY 18 //Out of memory #define SMEC_LIBARAYNOTINITIALIZED 19 //Library not initialized #pragma pack(push, 8) /////////////////////////////////////////////////////////////////////////// //Function: InitSkinMagicLib(HINSTANCE hInstance, LPCTSTR szApplication , // LPCTSTR szReserved1, // LPCTSTR szReserved2 // //Parameters: // hInstance // [in] Handle of application instance. // szApplication // [in] Application defined in skin file. If you set this parameter the // library can only load the skin file which application object named // match szApplication. // szReserved1 // [in] Reserved. // szReserved2 // [in] Reserved. //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // InitSkinMagicLib function should be the first API called in SkinMagicLib SDK, // followed by other APIs. // For multithreaded applications, you must call InitSkinMagicLib in every thread. // int __stdcall InitSkinMagicLib( HINSTANCE hInstance, LPCTSTR lpApplication , LPCTSTR lpReserved1, LPCTSTR lpReserved2 ); /////////////////////////////////////////////////////////////////////////// //Function: LoadSkinFile( LPCTSTR SkinFile ) // Load skin from file. //Parameters: // SkinFile // [in] Specifies the skin file name. //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // ExitSkinMagicLib function should be the last API called in SkinMagicLib SDK. // For multithreaded applications, you must call InitSkinMagicLib in every thread. void __stdcall ExitSkinMagicLib(); /////////////////////////////////////////////////////////////////////////// //Function: LoadSkinFile( LPCTSTR SkinFile ) // Load skin from file. //Parameters: // SkinFile // [in] Specifies the skin file name. //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Load skin from file. int __stdcall LoadSkinFile( LPCTSTR lpSkinFile ); /////////////////////////////////////////////////////////////////////////// //Function: LoadSkinFromResource(HMODULE hModule, LPCTSTR lpSkinName ,LPCTSTR lpType) // Use this function to load skin from resource. //Parameters: // hModule // [in] Handle to the module whose executable file contains the resource. // A value of NULL specifies the module handle associated with the image // file that the operating system used to create the current process. // lpSkinName // [in] Specifies the name of the skin resource. // lpType // [in] Specifies the resource type. //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // The application can use skin defined in resource. int __stdcall LoadSkinFromResource(HMODULE hModule, LPCTSTR lpSkinName ,LPCTSTR lpType); /////////////////////////////////////////////////////////////////////////// //Function: SetWindowSkin( HWND hWnd , LPCTSTR SkinName ) // Use SetWindowSkin to skin the standard windows - with rectangular // opaque client area and region-based non-client area, menu bar, // system/maximize/minimize/close buttons, caption and sizing edges // and corners. // //Parameters: // hWnd // [in]Handle to the window to be remove skin. // SkinName // [in]Specifies the name of FrameWnd object which defined in skin file. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use SetWindowSkin to skin the standard windows - with rectangular // opaque client area and region-based non-client area, menu bar, // system/maximize/minimize/close buttons, caption and sizing edges // and corners. int __stdcall SetWindowSkin( HWND hWnd , LPCTSTR lpSkinName ); /////////////////////////////////////////////////////////////////////////// //Function: SetShapeWindowSkin( HWND hWnd , LPCTSTR SkinName ) // Use SetShapeWindowSkin to skin application-specific windows // without non-client area and menu bar. These windows can have // absolutely any shape or even be translucent. // //Parameters: // hWnd // [in]Handle to the window to be remove skin. // SkinName // [in]Specifies the name of ShapeWnd object which defined in skin file. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use SetShapeWindowSkin to skin application-specific windows // without non-client area and menu bar. These windows can have // absolutely any shape or even be translucent. // int __stdcall SetShapeWindowSkin( HWND hWnd , LPCTSTR SkinName ); /////////////////////////////////////////////////////////////////////////// //Function: RemoveWindowSkin( HWND hWnd ) // set skin of new create dialog // //Parameters: // hWnd // [in]Handle to the window to be remove skin. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use this function to remove window skin. // int __stdcall RemoveWindowSkin( HWND hWnd ); /////////////////////////////////////////////////////////////////////////// //Function: SetDialogSkin( LPCTSTR szSkinName ) // set skin of new create dialog // //Parameters: // szSkinName // [in]Specifies the name of FrameWnd object which defined in skin file. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use this function to set dialog skin. dialog will auto be skinned // after this function called. // int __stdcall SetDialogSkin( LPCTSTR szSkinName ); /////////////////////////////////////////////////////////////////////////// //Function: SetSingleDialogSkin( HWND hWnd ,LPCTSTR szSkinName ) // Set the skin of an dialog // //Parameters: // hWnd // [in]Handle to the dialog to be set skin. // szSkinName // [in]Specifies the skin nanem. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use this function to set single dialog skin. // int __stdcall SetSingleDialogSkin( HWND hWnd , LPCTSTR szSkinName ); /////////////////////////////////////////////////////////////////////////// //Function: RemoveDialogSkin() // This function will stop auto skin dialog. // the function will not remove the dialog's // skin which already set. The new create dialog will have no skin. // //Parameters: // none. //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use this function to stop auto skin dialog. // int __stdcall RemoveDialogSkin(); /////////////////////////////////////////////////////////////////////////// //Function: EnableWindowScrollbarSkin( HWND hWnd ,int fnBar ) // Initialize the skin scrollbars for a window // //Parameters: // hWnd // [in]Handle to the window to be set skin scrollbar. // fnBar // [in]Specifies the type of scroll bar for which to skin. // This parameter can be one of the following values // SB_HORZ for the window's standard horizontal scroll bar. // SB_VERT for the window's standard scroll bar. // SB_BOTH for both horizontal and vertical scroll bar. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use this function to skin your window scrollbar // int __stdcall EnableWindowScrollbarSkin( HWND hWnd ,int fnBar ); /////////////////////////////////////////////////////////////////////////// //Function: DisableWindowScrollbarSkin( HWND hWnd ) // disable the skin scrollbars for a window // //Parameters: // hWnd // [in]Handle to the window to be disable skin scrollbar. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero //Remarks: // Use this function to skin your window scrollbar // int __stdcall DisableWindowScrollbarSkin( HWND hWnd ); /////////////////////////////////////////////////////////////////////////// //Function: TrackSkinPopupMenu( HMENU hMenu,int x, int y, HWND hWnd ) // The TrackSkinPopupMenu function displays a shortcut menu at the // specified location and tracks the selection of items on the menu. // The shortcut menu can appear anywhere on the screen. // //Parameters // hMenu // [in] Handle to the shortcut menu to be displayed. // The handle can be obtained by calling CreatePopupMenu // to create a new shortcut menu, or by calling GetSubMenu // to retrieve a handle to a submenu associated with an // existing menu item. //uFlags // [in] Use zero of more of these flags to specify function options. // Use one of the following flags to specify how the function positions // the shortcut menu horizontally. // ------------------------------------------------------------------------------ // TPM_CENTERALIGN If this flag is set, the function centers the shortcut // menu horizontally relative to the coordinate specified // by the x parameter. // TPM_LEFTALIGN If this flag is set, the function positions the shortcut // menu so that its left side is aligned with the coordinate // specified by the x parameter. // TPM_RIGHTALIGN Positions the shortcut menu so that its right side is // aligned with the coordinate specified by the x parameter. // ------------------------------------------------------------------------------ // Use one of the following flags to specify how the function positions the shortcut // menu vertically. // TPM_BOTTOMALIGN If this flag is set, the function positions the shortcut // menu so that its bottom side is aligned with the coordinate // specified by the y parameter. // TPM_TOPALIGN If this flag is set, the function positions the shortcut // menu so that its top side is aligned with the coordinate // specified by the y parameter. // TPM_VCENTERALIGN If this flag is set, the function centers the shortcut menu // vertically relative to the coordinate specified by the y parameter. // // x // [in] Specifies the horizontal location of the shortcut menu, // in screen coordinates. // y // [in] Specifies the vertical location of the shortcut menu, // in screen coordinates. // hWnd // [in] Handle to the window that owns the shortcut menu. // This window receives all messages from the menu. // The window does not receive a WM_COMMAND message from the // menu until the function returns. BOOL __stdcall TrackSkinPopupMenu( HMENU hMenu, UINT uFlags, int x, int y, HWND hWnd ); int __stdcall EnableCaptionButtons(HWND hWnd , LPCTSTR lpName , BOOL bEnable ); //for custom control support #define WM_SKINDATACHANGED WM_USER + 2000 //for #define WM_SETSKIN WM_APP + 1000 typedef HANDLE HSKIN; // handle to a skin data object int __stdcall RegisterSkinWindow( HWND hWnd , UINT uNotifyMsg ); int __stdcall UnregisterSkinWindow( HWND hWnd ); HSKIN __stdcall OpenSkinData( LPCTSTR pszSkinObjectName ); void __stdcall CloseSkinData( HSKIN hSkin ); //stocked property for every custom control int __stdcall GetSkinControlRect( HSKIN hSkin , RECT* pRect, BOOL* pAutoPlace ); int __stdcall GetSkinControlID( HSKIN hSkin , DWORD* dwID ); int __stdcall GetSkinControlFont( HSKIN hSkin , HFONT* phFont , COLORREF* pColor ); int __stdcall GetSkinControlColor( HSKIN hSkin , COLORREF* pColor ); int __stdcall GetSkinControlBkColor( HSKIN hSkin , COLORREF* pColor ); int __stdcall GetSkinTransparentColor( COLORREF* pColor , BOOL* pBool ); //user customed property int __stdcall GetSkinFont( HSKIN hSkin,LPCTSTR pszName , LOGFONT* pLogFont , COLORREF* pColor ); int __stdcall GetSkinColor( HSKIN hSkin , LPCTSTR pszName, COLORREF* pColor ); int __stdcall GetSkinBool( HSKIN hSkin , LPCTSTR pszName, bool* pbVal ); int __stdcall GetSkinInt( HSKIN hSkin , LPCTSTR pszName, int* piVal ); int __stdcall GetSkinDWORD( HSKIN hSkin , LPCTSTR pszName, DWORD* pdwVal ); int __stdcall GetSkinEnum( HSKIN hSkin , LPCTSTR pszName, DWORD* pdwVal ); int __stdcall GetSkinString( HSKIN hSkin, LPCTSTR pszName , LPTSTR pszBuff , unsigned long* pMaxBuffChars ); int __stdcall DrawSkinImageRect( HSKIN hSkin, LPCTSTR pszName, HDC hdc, RECT* pRect ); int __stdcall DrawSkinImageSection( HSKIN hSkin, LPCTSTR pszName, HDC hdc, RECT* pRect ); int __stdcall DrawSkinImageSectionFrame( HSKIN hSkin, LPCTSTR pszName, HDC hdc, RECT* pRect ); int __stdcall GetSkinImageSectionMargins( HSKIN hSkin, LPCTSTR pszName , const RECT* pRect , const RECT* pMargins ); int __stdcall CreateSkinImageRectRegion( HSKIN hSkin, LPCTSTR pszName, RECT* pBoundRect, SIZE* pImgSize, HRGN* pRegion); int __stdcall CreateSkinImageSectionRegion( HSKIN hSkin, LPCTSTR pszName, RECT* pRect, HRGN* pRegion ); int __stdcall DrawSkinTextEffect( HSKIN hSkin, LPCTSTR pszName, HDC hdc, const RECT* pRect, LPCTSTR lpText, UINT uLen, UINT uFlag ); /////////////////////////////////////////////////////////////////////////////////////////////// //CreateImageList // //The CreateImageList create a new image list from skin file. // // Parameters: // lpImagelistObjectName [in] The skinImageList object name. // Return Values // Returns the handle to the image list if successful, or NULL otherwise /////////////////////////////////////////////////////////////////////////////////////////////// HIMAGELIST __stdcall CreateImageList( LPCTSTR pszImageListObjectName ); struct MENUIMAGEINFO { UINT itemID; int iImage; }; ////////////////////////////////////////////////////////////////////////////////////////////////// //Function: SetWindowMainMenuImage // The SetWindowMainMenuImage function set windows main menu item's bitmap. // //Parameters: // hWnd // [in] Handle to the window own the menu.. // pMenuImage // [in] Pointer of an array of MENUIMAGEINFO struct . // nCount // [in] length of array pMenuImage. // hImageList // [in] imagelist used by the main menu to display normal item images. // hHotImageList // [in] imagelist used by the main menu to display hot item images. // hDisabledImagelist // [in] imagelist used by the main menu to display disabled item images. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero /////////////////////////////////////////////////////////////////////////////////////////// int __stdcall SetWindowMainMenuImage( HWND hWnd , MENUIMAGEINFO* pMenuImage, UINT nCount , HIMAGELIST hImageList , HIMAGELIST hHotImageList, HIMAGELIST hDisabledImagelist ); ///////////////////////////////////////////////////////////////////////////////////////////// //Function: TrackSkinPopupMenuEx // The TrackSkinPopupMenuEx function displays a shortcut menu at the // specified location and tracks the selection of items on the menu. // The shortcut menu can appear anywhere on the screen. // //Parameters // hMenu // [in] Handle to the shortcut menu to be displayed. // The handle can be obtained by calling CreatePopupMenu // to create a new shortcut menu, or by calling GetSubMenu // to retrieve a handle to a submenu associated with an // existing menu item. // lpSkinPopupMenuName // [in] The SkinPopupMenu object name. If lpSkinPopupMenuName is NULL SkinMagic // use default popupmenu skindata. // uFlags // [in] Use zero of more of these flags to specify function options. // Use one of the following flags to specify how the function positions // the shortcut menu horizontally. // ------------------------------------------------------------------------------ // TPM_CENTERALIGN If this flag is set, the function centers the shortcut // menu horizontally relative to the coordinate specified // by the x parameter. // TPM_LEFTALIGN If this flag is set, the function positions the shortcut // menu so that its left side is aligned with the coordinate // specified by the x parameter. // TPM_RIGHTALIGN Positions the shortcut menu so that its right side is // aligned with the coordinate specified by the x parameter. // ------------------------------------------------------------------------------ // Use one of the following flags to specify how the function positions the shortcut // menu vertically. // TPM_BOTTOMALIGN If this flag is set, the function positions the shortcut // menu so that its bottom side is aligned with the coordinate // specified by the y parameter. // TPM_TOPALIGN If this flag is set, the function positions the shortcut // menu so that its top side is aligned with the coordinate // specified by the y parameter. // TPM_VCENTERALIGN If this flag is set, the function centers the shortcut menu // vertically relative to the coordinate specified by the y parameter. // // x // [in] Specifies the horizontal location of the shortcut menu, // in screen coordinates. // y // [in] Specifies the vertical location of the shortcut menu, // in screen coordinates. // hWnd // [in] Handle to the window that owns the shortcut menu. // This window receives all messages from the menu. // The window does not receive a WM_COMMAND message from the // menu until the function returns. // pMenuImage // [in] Pointer of an array of MENUIMAGEINFO struct . // nCount // [in] length of array pMenuImage. // hImageList // [in] imagelist used by the main menu to display normal item images. // hHotImageList // [in] imagelist used by the main menu to display hot item images. // hDisabledImagelist // [in] imagelist used by the main menu to display disabled item images. /////////////////////////////////////////////////////////////////////////////////////////// BOOL __stdcall TrackSkinPopupMenuEx( HMENU hMenu, LPCTSTR lpSkinName, UINT uFlags, int x, int y, HWND hWnd , MENUIMAGEINFO* pMenuImage, UINT nCount , HIMAGELIST hImageList , HIMAGELIST hHotImageList, HIMAGELIST hDisabledImagelist ); int __stdcall RedrawCaptionStatic( HWND hWnd , LPCTSTR lpName ); DWORD __stdcall GetSkinMagicErrorCode(); //menu function //Use these function to get and set skinned window's menu HMENU __stdcall GetSkinMenu( HWND hWnd ); BOOL __stdcall SetSkinMenu( HWND hWnd , HMENU hMenu ); //The state of caption button #define CPBS_HOVERED 0x00000000 #define CPBS_PRESSED 0x00000001 #define CPBS_DISABLED 0x00000002 #define CPBS_NORMAL 0x00000003 ////////////////////////////////////////////////////////////////////////////////////////////////// //Function: GetCaptionButtonState // The GetCaptionBttonState function get captionbutton object's state. // //Parameters: // hWnd // [in] Handle to the window own the captionbutton. // lpName // [in] the captionbutton's name // pdwState // [out] the state of captionbutton. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero /////////////////////////////////////////////////////////////////////////////////////////// int __stdcall GetCaptionButtonState(HWND hWnd , LPCTSTR lpName , DWORD* pdwState ); ////////////////////////////////////////////////////////////////////////////////////////////////// //Function: SetCaptionButtonState // The SetCaptionBttonState function set captionbutton object's state. // //Parameters: // hWnd // [in] Handle to the window own the captionbutton. // lpName // [in] the captionbutton's name // dwState // [in] the state of captionbutton. // //Return Values: // If the function success, the return value is nonzero // If the function fail, the return value is zero /////////////////////////////////////////////////////////////////////////////////////////// int __stdcall SetCaptionButtonState(HWND hWnd , LPCTSTR lpName , DWORD dwState ); /////////////////////////////////////////////////////////////////////////////////////////// int __stdcall SetSkinWindowAccelerator( HWND hWnd, HACCEL hAccTable ); //////////////////////////////////////////////////////////////////////////////////////////// int __stdcall SetControlTooltip( HWND hWnd , LPCTSTR lpTooltip ); int __stdcall SetCaptionButtonTooltip( HWND hWnd , LPCTSTR lpName , LPCTSTR lpTooltip ); int __stdcall ShowTooltipPoint( HWND hWnd , LPCTSTR lpTooltip , LPPOINT lpPoint ); int __stdcall HideTooltip(); int __stdcall SetControlSkin( HWND hWnd , LPCTSTR szSkinName, LPCTSTR szOwnerSkinName ); COLORREF __stdcall GetSkinSysColor( int nIndex ); HBRUSH __stdcall GetSkinSysColorBrush( int nIndex ); // int __stdcall ShowSkinObject( HWND hWnd , LPCTSTR szSkinObject , BOOL bVisible ); int __stdcall SetSkinObjectText( HWND hWnd , LPCTSTR szSkinObject , LPCTSTR lpText ); int __stdcall GetSkinObjectText( HWND hWnd , LPCTSTR szSkinObject , LPTSTR lpText , int nMaxCount ); int __stdcall GetLibVersion( LPTSTR lpVersion ); int __stdcall GetSkinClientRect( HWND hWnd, LPRECT lpRect ); #define WM_CB_MOUSEMOVE WM_USER + 2001 #define WM_CB_LBUTTONDOWN WM_USER + 2002 #define WM_CB_RBUTTONDOWN WM_USER + 2003 #define WM_CB_LBUTTONUP WM_USER + 2004 #define WM_CB_RBUTTONUP WM_USER + 2005 #define WM_CB_LBUTTONDBLCLK WM_USER + 2006 #define WM_CB_MOUSELEAVE WM_USER + 2007 #define WM_CB_NOTIFY WM_USER + 2008 #define WM_PAINTCLIENT WM_USER + 2009 //wParam hDC //lParam lpRect - the client rect HBITMAP __stdcall CreateBitmapFromSkinImage( LPCTSTR szSkinImageName ); #pragma pack(pop) #endif