www.pudn.com > SouMP3.rar > AppFace.h
/*
File: appface.h
Description: The Application Interface of AppFace UI Development Kits .
Version 1.9
Compatible with:
Microsoft Windows 9x, NT, 2000, XP ,2003
Microsoft Visual C++
Borland C++ Builder
uses no MFC
uses no VCL
Copyright (c) 2003-2007, Matinsoft Inc. All rights reserved.
Website: http://www.appface.net
E-mail
Global: support@appface.net
China : support_cn@appface.net
History:
2007.10.26 1.9 Released
Added some defines for frame button
2007.01.08 1.8 Released
Added macro SKINSTART and SKINSETEX
Added two defines for SkinWindowSetEx: SKIN_CLASS_PAUSESKIN,SKIN_CLASS_REDOSKIN
Modified CAppFace member functions according the dll interfaces
2006.08.11 1.7 Released
1.Modified CAppFace member function: Start/StartW , SkinWindowEx/SkinWindowEx for better UNICODE support
2.Added the below defines for SkinWindowSet :
#define SKIN_CLASS_PAUSESKIN 2
#define SKIN_CLASS_REDOSKIN 3
#define SKIN_CLASS_REMOVESKIN 4
#define SKIN_CLASS_NOSKINEX 5
#define SKIN_SET_UNICODE_URF_FONT 661
2006.05.29 1.61 Released
Added some defines for SkinWindowSet: SKIN_CLASS_REMOVESKIN
2006.04.25 1.6 Released
Added three defines for SkinWindowSetEx : SKIN_SET_UNSKIN,SKIN_CLASS_SCROLLWINBORDER and SKIN_CLASS_SCROLLPANEL
2006.03.09 1.5 Released
Added defines for message WM_FRAME_BUTTON
2005.12.12 1.4 Released
Added defines for SKIN_SET_EFFECT and EFFECT_INOUT_...
2005.10.25 1.31 Released
Added defines for groupbox,radiobutton,checkbutton and shape window
2005.10.18 1.3 Released
Added interface for SkinWindowSetEx and SkinWindowSetExW
2005.06.29 1.21 Released
Added a skin class define : SKIN_CLASS_STATUSBAR_VB6
2005.04.15 1.2 Released
Added interface for BkCreate,BkDelete,BkDraw
2005.03.06 1.1 Released ,added the below define:
#define GTP_LOAD_FILE_ONLY 4
#define GTP_LOAD_MEMORY_ONLY 5
#define GTP_LOAD_RESOURCE_ONLY 6
2005.02.16 1.0 Released
*/
#ifndef __APPFACE_H__
#define __APPFACE_H__
//The message appface used
#define WM_MDICLIENT_NOTIFY WM_USER + 0x361
#define WM_DATETIME_LBUTTONUP WM_USER + 0x362
#define WM_SETMENU_NOTIFY WM_USER + 0x363
//The client frame window will receive this message when user click a frame button
#define WM_FRAME_BUTTON WM_USER + 0x364
//For WM_FRAME_BUTTON WPARAM
#define FRAME_BUTTON_MAX 1
#define FRAME_BUTTON_RESTORE 2
#define FRAME_BUTTON_MIN 3
//For custom frame button
#define FRAME_BUTTON_CUSTOMBASE 0x200 //The custom contol button
#define FB_COMMAND_REMOVE 0
#define FB_COMMAND_ENABLE 1
#define FB_COMMAND_DISABLE 2
#define FB_COMMAND_CHECK 3
#define FB_COMMAND_UNCHECK 4
//Load URF,and skin windwos automatically
#define GTP_LOAD_FILE 1
#define GTP_LOAD_MEMORY 2
#define GTP_LOAD_RESOURCE 3
//Load the URF into memory only ,but do not skin any windows,
//until users call SkinWindowSet
#define GTP_LOAD_FILE_ONLY 4
#define GTP_LOAD_MEMORY_ONLY 5
#define GTP_LOAD_RESOURCE_ONLY 6
//The window was created by which development tool
#define WINDOW_TYPE_AUTOFILTER 0 //Auto detected by appface
#define WINDOW_TYPE_SDK 1
#define WINDOW_TYPE_VC 1
#define WINDOW_TYPE_VB6 2
#define WINDOW_TYPE_BCB 3
#define WINDOW_TYPE_DELPHI 3
#define WINDOW_TYPE_NET 4
//Windows skin type,used for SkinWindowSet function
#define SKIN_CLASS_NOSKIN 0 //Do not skin a window ,but allocate the needed resource for it
//Windows
#define SKIN_CLASS_AUTOFILTER 1 //AppFace skin this window automatically
#define SKIN_CLASS_PAUSESKIN 2 //Pause skin for a special window,but do not free resource
#define SKIN_CLASS_REDOSKIN 3 //Redo skin from pause state
#define SKIN_CLASS_REMOVESKIN 4 //Unskin a window and remove all the allocated skin resource for it at the same time
#define SKIN_CLASS_NOSKINEX 5 //Unskin a window and all the child windows of it
#define SKIN_CLASS_UNKNOWN 6
#define SKIN_CLASS_SCROLLWIN 10
#define SKIN_CLASS_SCROLLWINBORDER 11
#define SKIN_CLASS_FRAMEWIN 101
#define SKIN_CLASS_FRAMEDIALOG 102
#define SKIN_CLASS_INSIDEDIALOG 103
#define SKIN_CLASS_MDICLIENT 104
#define SKIN_CLASS_SCROLLPANEL 105
//Controls
#define SKIN_CLASS_COMBOBOX 201
#define SKIN_CLASS_DATETIME 202
#define SKIN_CLASS_HEADER 203
#define SKIN_CLASS_GROUPBOX 204
#define SKIN_CLASS_IMAGEBUTTON 205
#define SKIN_CLASS_MENU 206
#define SKIN_CLASS_PROGRESS 207
#define SKIN_CLASS_PUSHBUTTON 208
#define SKIN_CLASS_SCROLLBAR 209
#define SKIN_CLASS_SLIDER 210
#define SKIN_CLASS_SPIN 211
#define SKIN_CLASS_SPILTER 212
#define SKIN_CLASS_STATUSBAR 213
#define SKIN_CLASS_TAB 214
#define SKIN_CLASS_TEXT 215
#define SKIN_CLASS_TOOLBAR 216
#define SKIN_CLASS_TOOLBAREX 217
#define SKIN_CLASS_PANEL 218
#define SKIN_CLASS_PANELEX 219
#define SKIN_CLASS_PANELELIXIR 220
#define SKIN_CLASS_HYPERLINK 221
#define SKIN_CLASS_STATUSBAR_VB6 222
#define SKIN_CLASS_SHAPEWIN 223
#define SKIN_CLASS_CHECKBUTTON 224
#define SKIN_CLASS_RADIOBUTTON 225
#define SKIN_CLASS_READONLYEDIT 226
#define SKIN_CLASS_FRAMEBTN 227
//Only for SkinWindowSetEx
#define SKIN_SET_TRANSPARENT 601
#define SKIN_SET_THEME_COLOR 602
#define SKIN_SET_EFFECT 603
#define SKIN_SET_REDRAW 604
#define SKIN_SET_SPECIAL_TOOL 610
//Only for VB6 scrollbar control
#define SKIN_SET_VB6_SCROLL_INFO 611
#define SKIN_SET_UNSKIN 660
#define SKIN_SET_UNICODE_URF_FONT 661
//Pause all the skin functions of AppFace for all windows in the target process,
//SKIN_CLASS_PAUSESKIN only pause skin functions for one special window .
//These two parameters do not release the allocated resource both.
#define SKIN_SET_PAUSESKIN 662
//Restore skin functions from SKIN_SET_PAUSESKIN state
#define SKIN_SET_REDOSKIN 663
//Indicate skin or not skin VC static control automatically
#define SKIN_SET_VCLABEL 664
//To contorl the custom frame button
#define SKIN_SET_FRAMEBTN 665
//Create bk object from another URF
#define SKIN_GET_BK 701
//
//Only for SKIN_SET_EFFECT
#define EFFECT_IN_SPIN 2
#define EFFECT_IN_VORTEX 3
#define EFFECT_IN_SCATTER 4
#define EFFECT_IN_STAR 5
#define EFFECT_IN_RAZZLE 6
#define EFFECT_OUT_SPIN 52
#define EFFECT_OUT_VORTEX 53
#define EFFECT_OUT_SCATTER 54
#define EFFECT_OUT_STAR 55
#define EFFECT_OUT_RAZZLE 56
//Background type
#define BK_DIALOGPANEL 1
#define BK_MDICLIENT 2
#define BK_MDICHILD 3
#define BK_SPLITTER 4
#define BK_STATUSBAR 5
#define BK_MENUBARBK 6
#define BK_MENUBARHOVER 7
#define BK_MENUBARDOWN 8
#define BK_MENU_BK 9
#define BK_MENU_HOVER 10
#define BK_SCROLL_BK 11
#define BK_SLIDER_CHANNEL_H 12
#define BK_SLIDER_CHANNEL_V 13
#define BK_PROGRESS_H_NORMAL 14
#define BK_PROGRESS_V_NORMAL 15
#define BK_PROGRESS_H_OVER 16
#define BK_PROGRESS_V_OVER 17
#define BK_IMAGE_ARROW 1001
#define BK_CUSTOM 10000
#define ARROW_UP_NORMAL 1
#define ARROW_UP_DOWN 2
#define ARROW_DOWN_NORMAL 3
#define ARROW_DOWN_DOWN 4
#define AFDLL_GET_VERSION 0xc001
#define SKIN_CLASS_NET2005_LOCK SKIN_CLASS_PAUSESKIN
#define SKIN_CLASS_NET2005_UNLOCK SKIN_CLASS_REDOSKIN
//Application Interface
#ifdef __cplusplus
extern "C"
{
#endif
BOOL __stdcall SkinStart(char* SkinFile ,
int nDefWinType ,
char* szCheckSum ,
int nURFType ,
DWORD hInstance ,
char* szResType
) ;
BOOL __stdcall SkinStartW(PCWSTR SkinFile,
int nDefWinType ,
PCWSTR szCheckSum ,
int nURFType ,
DWORD hInstance ,
PCWSTR szResType
) ;
void __stdcall SkinThread() ;
BOOL __stdcall SkinWindowSet(HWND hWnd,int nSkinType) ;
BOOL __stdcall SkinWindowSetEx( HWND hWnd ,
int nSkinType ,
int nID ,
int nURFType ,
char* SkinFile ,
DWORD hInst ,
char* szResType ) ;
BOOL __stdcall SkinWindowSetExW(HWND hWnd ,
int nSkinType ,
int nID ,
int nURFType ,
PCWSTR SkinFile ,
DWORD hInst ,
PCWSTR szResType ) ;
void __stdcall SkinRemove() ;
HANDLE __stdcall BkCreate(int nBkType) ;
BOOL __stdcall BkDraw(HANDLE bkHandle ,
HDC dcTarget ,
LPRECT rcTarget ,
int nReserved //nControl only for bitmap
) ;
void __stdcall BkDelete(HANDLE bkHandle) ;
//Define SKINSTART and SKINSETEX macro for both ANSI and UNICODE
#ifdef _UNICODE
#define SKINSTART SkinStartW
#define SKINSETEX SkinWindowSetExW
#else
#define SKINSTART SkinStart
#define SKINSETEX SkinWindowSetEx
#endif
#ifdef __cplusplus
}
#endif //__cplusplus
//Help class for loading AppFace dynamic
#ifdef __cplusplus
class CAppFace
{
public:
typedef BOOL (__stdcall *APPFACE_START)(char*,int,char*,int,DWORD,char*) ;
typedef BOOL (__stdcall *APPFACE_STARTW)(PCWSTR,int,PCWSTR,int,DWORD,PCWSTR) ;
typedef void (__stdcall *APPFACE_REMOVE)();
typedef BOOL (__stdcall *APPFACE_SKINWINDOW)(HWND,int);
typedef void (__stdcall *APPFACE_THREAD)();
typedef HANDLE (__stdcall *APPFACE_BKCREATE)(int);
typedef BOOL (__stdcall *APPFACE_BKDRAW)(HANDLE,HDC,LPRECT,int);
typedef void (__stdcall *APPFACE_BKDELETE)(HANDLE);
typedef BOOL (__stdcall *APPFACE_SKINWINDOWEX)(HWND,long,long,int,char*,DWORD,char*) ;
typedef BOOL (__stdcall *APPFACE_SKINWINDOWEXW)(HWND,long,long,int,PCWSTR,DWORD,PCWSTR) ;
//After Ver 2.4 and the later, appface.dll is for ANSI ,appfaceu.dll is for UNICODE
#ifdef _UNICODE
CAppFace(LPCTSTR DllPath = L"AppFaceu.dll")
#else
CAppFace(LPCTSTR DllPath = "AppFace.dll")
#endif
{
pfnStart = NULL ;
pfnStartW = NULL ;
pfnRemove = NULL ;
pfnThread = NULL ;
pfnSkinWindow = NULL ;
pfnBkCreate = NULL ;
pfnBkDraw = NULL ;
pfnBkDelete = NULL ;
pfnSkinWindowEx = NULL ;
pfnSkinWindowExW= NULL ;
m_bValid = FALSE;
m_hDll = NULL ;
Init(DllPath) ;
};
~CAppFace(){Release(); };
BOOL Init(LPCTSTR DllPath)
{
if(m_hDll && m_bValid) return TRUE;
m_hDll = ::LoadLibrary(DllPath);
if(m_hDll == NULL) return FALSE ;
pfnStart = (APPFACE_START) GetProcAddress(m_hDll, "SkinStart");
if(!pfnStart) return FALSE;
pfnStartW = (APPFACE_STARTW) GetProcAddress(m_hDll, "SkinStartW");
if(!pfnStartW) return FALSE;
pfnRemove= (APPFACE_REMOVE)GetProcAddress(m_hDll, "SkinRemove");
if(!pfnRemove) return FALSE;
pfnSkinWindow= (APPFACE_SKINWINDOW)GetProcAddress(m_hDll, "SkinWindowSet");
if(!pfnSkinWindow) return FALSE;
pfnThread= (APPFACE_THREAD)GetProcAddress(m_hDll, "SkinThread");
if(!pfnThread) return FALSE;
pfnBkCreate= (APPFACE_BKCREATE)GetProcAddress(m_hDll, "BkCreate");
if(!pfnBkCreate) return FALSE;
pfnBkDraw= (APPFACE_BKDRAW)GetProcAddress(m_hDll, "BkDraw");
if(!pfnBkDraw) return FALSE;
pfnBkDelete= (APPFACE_BKDELETE)GetProcAddress(m_hDll, "BkDelete");
if(!pfnBkDelete) return FALSE;
pfnSkinWindowExW= (APPFACE_SKINWINDOWEXW)GetProcAddress(m_hDll, "SkinWindowSetExW");
if(!pfnSkinWindowExW) return FALSE;
pfnSkinWindowEx= (APPFACE_SKINWINDOWEX)GetProcAddress(m_hDll, "SkinWindowSetEx");
if(!pfnSkinWindowEx) return FALSE;
m_bValid = TRUE ;
return TRUE ;
};
BOOL IsValid(){return m_bValid;};
//----------------------------
//We'll call these functions.
void SkinThread(){if(pfnThread) pfnThread() ;};
void SkinRemove() { if(pfnRemove) pfnRemove() ;};
BOOL SkinWindowSet(HWND hWnd,int nSkinType){if(pfnSkinWindow) return pfnSkinWindow(hWnd,nSkinType);return FALSE;} ;
HANDLE BkCreate(int nBkType) {
if(pfnBkCreate)
return pfnBkCreate(nBkType) ;
else
return NULL ;
};
void BkDelete(HANDLE h) {if(pfnBkDelete) pfnBkDelete(h) ;};
BOOL BkDraw(HANDLE bkHandle ,
HDC dcTarget ,
LPRECT rcTarget ,
int nReserved = 0) {
if(pfnBkDraw)
return pfnBkDraw(bkHandle,dcTarget,rcTarget,nReserved) ;
else
return FALSE ;
};
BOOL SkinStart(LPCTSTR SkinFile=NULL, //Source buffer
int nDefWinType = WINDOW_TYPE_AUTOFILTER , //The window was created by which development tool
LPCTSTR szCheckSum= NULL , //Checksum string,not used for the free version
int nLoadType = GTP_LOAD_FILE, //Loading type
DWORD hInst= NULL, //The HINSTANCE for the loaded module or the size of the memory block
LPCTSTR szResType =NULL //Resource type ,only used when Type is GTP_LOAD_RESOURCE
)
{
#ifdef _UNICODE
if(pfnStartW)
return pfnStartW((PCWSTR)SkinFile,nDefWinType,(PCWSTR)szCheckSum,nLoadType,hInst,(PCWSTR)szResType);
#else
if(pfnStart)
return pfnStart((char *)SkinFile,nDefWinType,(char *)szCheckSum,nLoadType,hInst,(char *)szResType);
#endif
return FALSE;
};
BOOL SkinWindowSetEx( HWND hWnd , //The target window handle
long nSkinType , //The skin type
long nID , //The resource ID in the skin
int nURFType = GTP_LOAD_FILE, //The type that indicate how to load this URF skin
LPCTSTR SkinFile = NULL , //Urf skin path
DWORD hInst = NULL , //The instance of the module or the size of memory block
LPCTSTR szResType = NULL ) //The resource type if nURFType is GTP_LOAD_RESOURCE
{
#ifdef _UNICODE
if(pfnSkinWindowExW)
return pfnSkinWindowExW(hWnd,nSkinType,nID,nURFType,(PCWSTR)SkinFile,hInst,(PCWSTR)szResType);
#else
if(pfnSkinWindowEx)
return pfnSkinWindowEx(hWnd,nSkinType,nID,nURFType,(char *)SkinFile,hInst,(char *)szResType);
#endif
return FALSE ;
};
//----------------------------
// To compatible with the previous verisons
void Remove() { SkinRemove() ;};
BOOL SkinWindow(HWND hWnd,int nSkinType){return SkinWindowSet(hWnd,nSkinType);} ;
BOOL Start(LPCTSTR SkinFile=NULL, //Source buffer
int nDefWinType = WINDOW_TYPE_AUTOFILTER , //The window was created by which development tool
LPCTSTR szCheckSum= NULL , //Checksum string,not used for the free version
int nLoadType = GTP_LOAD_FILE, //Loading type
DWORD hInst= NULL, //The HINSTANCE for the loaded module or the size of the memory block
LPCTSTR szResType =NULL //Resource type ,only used when Type is GTP_LOAD_RESOURCE
)
{
return SkinStart(SkinFile,nDefWinType,szCheckSum,nLoadType,hInst,szResType) ;
};
BOOL SkinWindowEx( HWND hWnd , //The target window handle
long nSkinType , //The skin type
long nID , //The resource ID in the skin
int nURFType = GTP_LOAD_FILE, //The type that indicate how to load this URF skin
LPCTSTR SkinFile = NULL , //Urf skin path
DWORD hInst = NULL , //The instance of the module or the size of memory block
LPCTSTR szResType = NULL ) //The resource type if nURFType is GTP_LOAD_RESOURCE
{
return SkinWindowSetEx(hWnd,nSkinType,nID,nURFType,SkinFile,hInst,szResType);
};
//----------------------------
private:
BOOL m_bValid ;
HMODULE m_hDll ;
APPFACE_START pfnStart ;
APPFACE_STARTW pfnStartW ;
APPFACE_REMOVE pfnRemove ;
APPFACE_SKINWINDOW pfnSkinWindow ;
APPFACE_THREAD pfnThread ;
APPFACE_BKCREATE pfnBkCreate ;
APPFACE_BKDRAW pfnBkDraw ;
APPFACE_BKDELETE pfnBkDelete ;
APPFACE_SKINWINDOWEX pfnSkinWindowEx ;
APPFACE_SKINWINDOWEXW pfnSkinWindowExW ;
protected:
void Release()
{
try{
if(m_hDll)
{
FreeLibrary(m_hDll) ;
m_hDll = NULL ;
m_bValid = false ;
pfnStart = NULL ;
pfnStartW= NULL ;
pfnRemove= NULL ;
pfnSkinWindow = NULL ;
pfnBkCreate = NULL ;
pfnBkDraw = NULL ;
pfnBkDelete = NULL ;
pfnSkinWindowEx = NULL;
pfnSkinWindowExW = NULL;
}
}catch(...){}
};
};
#endif //__cplusplus
#endif //__APPFACE_H__