AppFace.h
上传用户:weimei12
上传日期:2022-08-11
资源大小:185k
文件大小:18k
源码类别:

Email客户端

开发平台:

Visual C++

  1. /*
  2.   File: appface.h
  3.   Description:  The Application Interface of AppFace UI Development Kits .
  4.   Version  2.0
  5.  
  6.   Compatible with:
  7.        Microsoft Windows 9x, NT, 2000, XP ,2003
  8.    Microsoft Visual C++
  9.    Borland   C++ Builder
  10.   uses no MFC
  11.   uses no VCL
  12.   Copyright (c) 2003-2008, Matinsoft Inc. All rights reserved.
  13.   
  14. Website: http://www.appface.com
  15. E-mail 
  16.   Global: support@appface.com
  17.   China : support_cn@appface.com
  18.   
  19. History:
  20. 2008.05.18   2.0  Released
  21. Added callback defines of PaintCustomProc .
  22. 2007.01.08   1.8  Released
  23. Added macro SKINSTART and SKINSETEX
  24. Added two defines for SkinWindowSetEx: SKIN_CLASS_PAUSESKIN,SKIN_CLASS_REDOSKIN
  25. Modified CAppFace member functions according the dll interfaces
  26. 2006.08.11   1.7  Released
  27. 1.Modified CAppFace member function: Start/StartW , SkinWindowEx/SkinWindowEx for better UNICODE support
  28. 2.Added the below defines for SkinWindowSet :
  29. #define SKIN_CLASS_PAUSESKIN         2  
  30. #define SKIN_CLASS_REDOSKIN          3  
  31. #define SKIN_CLASS_REMOVESKIN        4  
  32. #define SKIN_CLASS_NOSKINEX          5  
  33. #define SKIN_SET_UNICODE_URF_FONT  661
  34. 2006.05.29   1.61 Released
  35. Added some defines for SkinWindowSet: SKIN_CLASS_REMOVESKIN 
  36. 2006.04.25   1.6  Released
  37. Added three defines for SkinWindowSetEx : SKIN_SET_UNSKIN,SKIN_CLASS_SCROLLWINBORDER and SKIN_CLASS_SCROLLPANEL
  38. 2006.03.09   1.5  Released
  39. Added defines for message WM_FRAME_BUTTON
  40. 2005.12.12   1.4  Released
  41. Added defines for SKIN_SET_EFFECT and EFFECT_INOUT_...
  42. 2005.10.25   1.31 Released
  43. Added defines for groupbox,radiobutton,checkbutton and shape window
  44. 2005.10.18   1.3 Released
  45. Added interface for SkinWindowSetEx and SkinWindowSetExW
  46. 2005.06.29   1.21 Released
  47. Added a skin class define : SKIN_CLASS_STATUSBAR_VB6
  48. 2005.04.15  1.2 Released
  49.   Added interface for BkCreate,BkDelete,BkDraw
  50. 2005.03.06  1.1  Released ,added the below define:
  51. #define GTP_LOAD_FILE_ONLY         4    
  52. #define GTP_LOAD_MEMORY_ONLY       5
  53. #define GTP_LOAD_RESOURCE_ONLY     6
  54.   2005.02.16  1.0  Released
  55.  */
  56. #ifndef __APPFACE_H__
  57. #define __APPFACE_H__
  58. //The message appface used
  59. #define WM_MDICLIENT_NOTIFY    WM_USER + 0x361
  60. #define WM_DATETIME_LBUTTONUP  WM_USER + 0x362
  61. #define WM_SETMENU_NOTIFY      WM_USER + 0x363
  62. //The client frame window will receive this message when user click a frame button
  63. #define WM_FRAME_BUTTON        WM_USER + 0x364
  64. //Send this message to the hyperlink control to modify the URL 
  65. #define WM_HYPERLINK_URL       WM_USER + 0X365
  66. //Send this message to display a transparent GIF on a SKIN_CLASS_STATIC control
  67. #define WM_TRANSPARENT_GIF     WM_USER + 0X365
  68. //Give users a chance to do custom draw for the skinned windows ,
  69. //user can draw anything they want on the AppFace background in the callback function body .
  70. typedef int (CALLBACK *PAINTCUSTOMPROC)(HDC , HWND) ; 
  71.   //For WM_FRAME_BUTTON  WPARAM
  72. #define FRAME_BUTTON_MAX             1
  73. #define FRAME_BUTTON_RESTORE         2
  74. #define FRAME_BUTTON_MIN             3
  75. #define FRAME_BUTTON_CLOSE           4
  76.   
  77.   //For custom frame button
  78. #define FRAME_BUTTON_CUSTOMBASE  0x200           //The custom control button
  79. #define FB_COMMAND_REMOVE            0
  80. #define FB_COMMAND_ENABLE            1
  81. #define FB_COMMAND_DISABLE           2
  82. #define FB_COMMAND_CHECK             3
  83. #define FB_COMMAND_UNCHECK           4
  84. //Load URF,and skin windows automatically
  85. #define GTP_LOAD_FILE                1
  86. #define GTP_LOAD_MEMORY              2
  87. #define GTP_LOAD_RESOURCE            3
  88. //Load the URF into memory only ,but do not skin any windows,
  89. //until users call SkinWindowSet
  90. #define GTP_LOAD_FILE_ONLY           4    
  91. #define GTP_LOAD_MEMORY_ONLY         5
  92. #define GTP_LOAD_RESOURCE_ONLY       6
  93. //The window was created by which development tool
  94. #define WINDOW_TYPE_AUTOFILTER       0  //Auto detected by appface
  95. #define WINDOW_TYPE_SDK              1
  96. #define WINDOW_TYPE_VC               1
  97. #define WINDOW_TYPE_VB6              2
  98. #define WINDOW_TYPE_BCB              3
  99. #define WINDOW_TYPE_DELPHI           3
  100. #define WINDOW_TYPE_NET              4
  101. //Windows skin type,used for SkinWindowSet function
  102. #define SKIN_CLASS_NOSKIN            0   //Do not skin a window ,but allocate the needed resource for it
  103.   //Windows
  104. #define SKIN_CLASS_AUTOFILTER        1   //AppFace skin this window automatically
  105. #define SKIN_CLASS_PAUSESKIN         2   //Pause skin for a special window,but do not free resource
  106. #define SKIN_CLASS_REDOSKIN          3   //Redo skin from pause state
  107. #define SKIN_CLASS_REMOVESKIN        4   //Unskin a window and remove all the allocated skin resource for it at the same time
  108. #define SKIN_CLASS_NOSKINEX          5   //Unskin a window and all the child windows of it
  109. #define SKIN_CLASS_UNKNOWN           6
  110. #define SKIN_CLASS_AUTOFILTEREX      7
  111. #define SKIN_CLASS_SCROLLWIN        10
  112. #define SKIN_CLASS_SCROLLWINBORDER  11
  113. #define SKIN_CLASS_FRAMEWIN        101
  114. #define SKIN_CLASS_FRAMEDIALOG     102
  115. #define SKIN_CLASS_INSIDEDIALOG    103
  116. #define SKIN_CLASS_MDICLIENT       104
  117. #define SKIN_CLASS_SCROLLPANEL     105
  118. #define SKIN_CLASS_FRAMEBACKGROUND 106
  119.   //Controls
  120. #define SKIN_CLASS_COMBOBOX        201
  121. #define SKIN_CLASS_DATETIME        202
  122. #define SKIN_CLASS_HEADER          203
  123. #define SKIN_CLASS_GROUPBOX        204
  124. #define SKIN_CLASS_IMAGEBUTTON     205
  125. #define SKIN_CLASS_MENU            206
  126. #define SKIN_CLASS_PROGRESS        207
  127. #define SKIN_CLASS_PUSHBUTTON      208
  128. #define SKIN_CLASS_SCROLLBAR       209
  129. #define SKIN_CLASS_SLIDER          210
  130. #define SKIN_CLASS_SPIN            211
  131. #define SKIN_CLASS_SPILTER         212
  132. #define SKIN_CLASS_STATUSBAR       213
  133. #define SKIN_CLASS_TAB             214
  134. #define SKIN_CLASS_TEXT            215
  135. #define SKIN_CLASS_TOOLBAR         216
  136. #define SKIN_CLASS_TOOLBARPANEL    217
  137. #define SKIN_CLASS_PANEL           218
  138. #define SKIN_CLASS_PANELEX         219
  139. #define SKIN_CLASS_PANELELIXIR     220
  140. #define SKIN_CLASS_HYPERLINK       221
  141. #define SKIN_CLASS_STATUSBAR_VB6   222
  142. #define SKIN_CLASS_SHAPEWIN        223
  143. #define SKIN_CLASS_CHECKBUTTON     224
  144. #define SKIN_CLASS_RADIOBUTTON     225
  145. #define SKIN_CLASS_READONLYEDIT    226
  146. #define SKIN_CLASS_FRAMEBTN        227
  147. #define SKIN_CLASS_SLIDEREX        228
  148.  //Only for SkinWindowSetEx
  149. #define SKIN_SET_TRANSPARENT       601
  150. #define SKIN_SET_THEME_COLOR       602
  151. #define SKIN_SET_EFFECT            603
  152. #define SKIN_SET_REDRAW            604
  153. #define SKIN_SET_PAINTCUSTOMPROC   605
  154. #define SKIN_SET_NCPAINTCUSTOMPROC 606
  155. #define SKIN_SET_SPECIAL_TOOL      610
  156. //Only for VB6 scrollbar control
  157. #define SKIN_SET_VB6_SCROLL_INFO   611
  158. #define SKIN_SET_UNSKIN            660
  159. #define SKIN_SET_UNICODE_URF_FONT  661
  160. //Pause all the skin functions of AppFace for all windows in the target process,
  161. //SKIN_CLASS_PAUSESKIN only pause skin functions for one special window .
  162. //These two parameters do not release the allocated resource both.
  163. #define SKIN_SET_PAUSESKIN         662
  164. //Restore skin functions from SKIN_SET_PAUSESKIN state
  165. #define SKIN_SET_REDOSKIN          663
  166. //Indicate skin or not skin VC static control automatically
  167. #define SKIN_SET_VCLABEL           664
  168. //To control the custom frame button
  169. #define SKIN_SET_FRAMEBTN          665
  170. //Create bk object from another URF
  171. #define SKIN_GET_BK                701
  172. //
  173.   //Only for SKIN_SET_EFFECT
  174. #define EFFECT_IN_SPIN               2
  175. #define EFFECT_IN_VORTEX             3
  176. #define EFFECT_IN_SCATTER            4
  177. #define EFFECT_IN_STAR               5
  178. #define EFFECT_IN_RAZZLE             6
  179. #define EFFECT_OUT_SPIN             52
  180. #define EFFECT_OUT_VORTEX           53
  181. #define EFFECT_OUT_SCATTER          54
  182. #define EFFECT_OUT_STAR             55
  183. #define EFFECT_OUT_RAZZLE           56
  184.   //Background type
  185. #define BK_DIALOGPANEL               1
  186. #define BK_MDICLIENT                 2
  187. #define BK_MDICHILD                  3
  188. #define BK_SPLITTER                  4
  189. #define BK_STATUSBAR                 5
  190. #define BK_MENUBARBK                 6
  191. #define BK_MENUBARHOVER              7
  192. #define BK_MENUBARDOWN               8
  193. #define BK_MENU_BK                   9
  194. #define BK_MENU_HOVER               10
  195. #define BK_SCROLL_BK                11
  196. #define BK_SLIDER_CHANNEL_H         12
  197. #define BK_SLIDER_CHANNEL_V         13
  198. #define BK_PROGRESS_H_NORMAL        14
  199. #define BK_PROGRESS_V_NORMAL        15
  200. #define BK_PROGRESS_H_OVER          16
  201. #define BK_PROGRESS_V_OVER          17
  202. #define BK_IMAGE_ARROW            1001
  203. #define BK_CUSTOM                10000
  204. #define ARROW_UP_NORMAL              1
  205. #define ARROW_UP_DOWN                2
  206. #define ARROW_DOWN_NORMAL            3
  207. #define ARROW_DOWN_DOWN              4
  208. #define AFDLL_GET_VERSION       0xc001
  209. #define SKIN_CLASS_NET2005_LOCK   SKIN_CLASS_PAUSESKIN
  210. #define SKIN_CLASS_NET2005_UNLOCK SKIN_CLASS_REDOSKIN
  211. #define SKIN_CLASS_TOOLBAREX      SKIN_CLASS_TOOLBARPANEL
  212. //Application    Interface
  213. #ifdef __cplusplus  
  214. extern "C"
  215. {
  216. #endif
  217. BOOL   __stdcall SkinStart(char* SkinFile  ,
  218.    int   nDefWinType       ,
  219.    char* szCheckSum        ,
  220.    int   nURFType          ,
  221.    DWORD hInstance         ,
  222.    char* szResType         
  223.    )      ;
  224. BOOL   __stdcall SkinStartW(PCWSTR SkinFile,
  225.    int    nDefWinType      ,
  226.    PCWSTR szCheckSum       ,
  227.    int    nURFType         ,
  228.    DWORD  hInstance        ,
  229.    PCWSTR szResType        
  230.    )     ;
  231. void   __stdcall SkinThread() ;
  232. BOOL   __stdcall SkinWindowSet(HWND hWnd,int nSkinType) ;
  233. BOOL   __stdcall SkinWindowSetEx( HWND   hWnd       ,
  234.   int    nSkinType  ,
  235.   int    nID        ,
  236.                           int    nURFType   ,
  237.   char*  SkinFile   ,   
  238.   DWORD  hInst      , 
  239.   char*  szResType  ) ;
  240. BOOL   __stdcall SkinWindowSetExW(HWND   hWnd       ,
  241.   int    nSkinType  ,
  242.   int    nID        ,
  243.                           int    nURFType   ,
  244.   PCWSTR SkinFile   ,   
  245.   DWORD  hInst      , 
  246.   PCWSTR szResType  ) ;
  247. void   __stdcall SkinRemove() ;         
  248. HANDLE __stdcall BkCreate(int nBkType) ;
  249. BOOL   __stdcall BkDraw(HANDLE bkHandle    ,
  250. HDC dcTarget       , 
  251. LPRECT rcTarget    ,
  252. int nReserved         //nControl only for bitmap 
  253. ) ;
  254. void   __stdcall BkDelete(HANDLE bkHandle) ;
  255. //Define SKINSTART and SKINSETEX macro for both ANSI and UNICODE
  256. #ifdef _UNICODE
  257. #define SKINSTART SkinStartW
  258. #define SKINSETEX SkinWindowSetExW
  259. #else
  260. #define SKINSTART SkinStart
  261. #define SKINSETEX SkinWindowSetEx
  262. #endif
  263. #ifdef __cplusplus
  264. }
  265. #endif  //__cplusplus
  266. //Help class for loading AppFace  dynamic
  267. #ifdef __cplusplus
  268. class CAppFace
  269. {
  270. public:
  271. typedef BOOL   (__stdcall *APPFACE_START)(char*,int,char*,int,DWORD,char*) ;
  272. typedef BOOL   (__stdcall *APPFACE_STARTW)(PCWSTR,int,PCWSTR,int,DWORD,PCWSTR) ;
  273. typedef void   (__stdcall *APPFACE_REMOVE)();
  274. typedef BOOL   (__stdcall *APPFACE_SKINWINDOW)(HWND,int);
  275. typedef void   (__stdcall *APPFACE_THREAD)();
  276. typedef HANDLE (__stdcall *APPFACE_BKCREATE)(int);
  277. typedef BOOL   (__stdcall *APPFACE_BKDRAW)(HANDLE,HDC,LPRECT,int);
  278. typedef void   (__stdcall *APPFACE_BKDELETE)(HANDLE);
  279. typedef BOOL   (__stdcall *APPFACE_SKINWINDOWEX)(HWND,long,long,int,char*,DWORD,char*) ;
  280. typedef BOOL   (__stdcall *APPFACE_SKINWINDOWEXW)(HWND,long,long,int,PCWSTR,DWORD,PCWSTR) ;
  281. //After Ver 2.4 and the later, appface.dll is for ANSI ,appfaceu.dll is for UNICODE
  282. #ifdef _UNICODE
  283. CAppFace(LPCTSTR DllPath = L"AppFaceu.dll")
  284. #else
  285.     CAppFace(LPCTSTR DllPath = "AppFace.dll")
  286. #endif
  287. {
  288. pfnStart        = NULL ;
  289. pfnStartW       = NULL ;
  290. pfnRemove       = NULL ;
  291. pfnThread       = NULL ;
  292. pfnSkinWindow   = NULL ;
  293. pfnBkCreate     = NULL ;
  294. pfnBkDraw       = NULL ;
  295. pfnBkDelete     = NULL ;
  296. pfnSkinWindowEx = NULL ;
  297. pfnSkinWindowExW= NULL ;
  298. m_bValid        = FALSE; 
  299. m_hDll          = NULL ;
  300. Init(DllPath) ;
  301. };
  302. ~CAppFace(){Release(); };
  303. BOOL Init(LPCTSTR DllPath)
  304. {
  305. if(m_hDll && m_bValid) return TRUE;
  306. m_hDll = ::LoadLibrary(DllPath);
  307. if(m_hDll == NULL) return FALSE ;
  308. pfnStart = (APPFACE_START) GetProcAddress(m_hDll, "SkinStart"); 
  309. if(!pfnStart)     return FALSE; 
  310. pfnStartW = (APPFACE_STARTW) GetProcAddress(m_hDll, "SkinStartW"); 
  311. if(!pfnStartW)     return FALSE; 
  312. pfnRemove= (APPFACE_REMOVE)GetProcAddress(m_hDll, "SkinRemove"); 
  313. if(!pfnRemove)     return FALSE; 
  314. pfnSkinWindow= (APPFACE_SKINWINDOW)GetProcAddress(m_hDll, "SkinWindowSet"); 
  315. if(!pfnSkinWindow) return FALSE; 
  316. pfnThread= (APPFACE_THREAD)GetProcAddress(m_hDll, "SkinThread"); 
  317. if(!pfnThread)     return FALSE; 
  318. pfnBkCreate= (APPFACE_BKCREATE)GetProcAddress(m_hDll, "BkCreate"); 
  319. if(!pfnBkCreate)     return FALSE; 
  320. pfnBkDraw= (APPFACE_BKDRAW)GetProcAddress(m_hDll, "BkDraw"); 
  321. if(!pfnBkDraw)     return FALSE; 
  322. pfnBkDelete= (APPFACE_BKDELETE)GetProcAddress(m_hDll, "BkDelete"); 
  323. if(!pfnBkDelete)     return FALSE; 
  324. pfnSkinWindowExW= (APPFACE_SKINWINDOWEXW)GetProcAddress(m_hDll, "SkinWindowSetExW"); 
  325. if(!pfnSkinWindowExW)     return FALSE; 
  326. pfnSkinWindowEx= (APPFACE_SKINWINDOWEX)GetProcAddress(m_hDll, "SkinWindowSetEx"); 
  327. if(!pfnSkinWindowEx)     return FALSE; 
  328. m_bValid = TRUE ;
  329. return TRUE ;
  330. };
  331. BOOL IsValid(){return m_bValid;};
  332. //----------------------------
  333. //We'll call these functions.
  334. void SkinThread(){if(pfnThread) pfnThread() ;}; 
  335. void SkinRemove() { if(pfnRemove) pfnRemove() ;};
  336. BOOL SkinWindowSet(HWND hWnd,int nSkinType){if(pfnSkinWindow) return pfnSkinWindow(hWnd,nSkinType);return FALSE;} ;
  337. HANDLE BkCreate(int nBkType) {
  338. if(pfnBkCreate) 
  339. return pfnBkCreate(nBkType) ; 
  340. else 
  341. return NULL ;
  342. };
  343. void   BkDelete(HANDLE h) {if(pfnBkDelete) pfnBkDelete(h) ;};
  344. BOOL   BkDraw(HANDLE bkHandle          ,
  345. HDC dcTarget       , 
  346. LPRECT rcTarget    ,
  347. int nReserved = 0) {
  348. if(pfnBkDraw) 
  349. return pfnBkDraw(bkHandle,dcTarget,rcTarget,nReserved) ;
  350. else
  351. return FALSE ;
  352. };
  353. BOOL SkinStart(LPCTSTR   SkinFile=NULL,  //Source buffer
  354.    int     nDefWinType = WINDOW_TYPE_AUTOFILTER ,   //The window was created by which development tool       
  355.    LPCTSTR   szCheckSum= NULL , //Checksum string,not used for the free version
  356.    int     nLoadType = GTP_LOAD_FILE, //Loading type
  357.    DWORD   hInst= NULL,   //The HINSTANCE for the loaded module or the size of the memory block
  358.    LPCTSTR   szResType =NULL  //Resource type ,only used when Type is GTP_LOAD_RESOURCE
  359. )
  360. {
  361. #ifdef _UNICODE
  362. if(pfnStartW)
  363. return pfnStartW((PCWSTR)SkinFile,nDefWinType,(PCWSTR)szCheckSum,nLoadType,hInst,(PCWSTR)szResType);
  364. #else
  365. if(pfnStart)
  366. return pfnStart((char *)SkinFile,nDefWinType,(char *)szCheckSum,nLoadType,hInst,(char *)szResType);
  367. #endif
  368. return FALSE;
  369. };
  370. BOOL SkinWindowSetEx( HWND   hWnd  ,  //The target window handle
  371.   long   nSkinType  ,  //The skin type 
  372.   long   nID        ,  //The resource ID in the skin
  373.           int    nURFType  = GTP_LOAD_FILE,  //The type that indicate how to load this URF skin 
  374.   LPCTSTR  SkinFile  = NULL  ,  //Urf skin path
  375.   DWORD  hInst     = NULL  ,  //The instance of the module or the size of memory block
  376.   LPCTSTR  szResType = NULL )  //The resource type if nURFType is GTP_LOAD_RESOURCE
  377. {
  378. #ifdef _UNICODE
  379. if(pfnSkinWindowExW)
  380. return pfnSkinWindowExW(hWnd,nSkinType,nID,nURFType,(PCWSTR)SkinFile,hInst,(PCWSTR)szResType);
  381. #else
  382. if(pfnSkinWindowEx)
  383. return pfnSkinWindowEx(hWnd,nSkinType,nID,nURFType,(char *)SkinFile,hInst,(char *)szResType);
  384. #endif
  385. return FALSE ;
  386. };
  387. //----------------------------
  388. // To compatible with the previous verisons
  389. void Remove() { SkinRemove() ;};
  390. BOOL SkinWindow(HWND hWnd,int nSkinType){return SkinWindowSet(hWnd,nSkinType);} ;
  391. BOOL Start(LPCTSTR   SkinFile=NULL,  //Source buffer
  392.    int     nDefWinType = WINDOW_TYPE_AUTOFILTER ,   //The window was created by which development tool       
  393.    LPCTSTR   szCheckSum= NULL , //Checksum string,not used for the free version
  394.    int     nLoadType = GTP_LOAD_FILE, //Loading type
  395.    DWORD   hInst= NULL,   //The HINSTANCE for the loaded module or the size of the memory block
  396.    LPCTSTR   szResType =NULL  //Resource type ,only used when Type is GTP_LOAD_RESOURCE
  397. )
  398. {
  399. return SkinStart(SkinFile,nDefWinType,szCheckSum,nLoadType,hInst,szResType) ;
  400. };
  401. BOOL SkinWindowEx( HWND   hWnd  ,  //The target window handle
  402.   long   nSkinType  ,  //The skin type 
  403.   long   nID        ,  //The resource ID in the skin
  404.           int    nURFType  = GTP_LOAD_FILE,  //The type that indicate how to load this URF skin 
  405.   LPCTSTR  SkinFile  = NULL  ,  //Urf skin path
  406.   DWORD  hInst     = NULL  ,  //The instance of the module or the size of memory block
  407.   LPCTSTR  szResType = NULL )  //The resource type if nURFType is GTP_LOAD_RESOURCE
  408. {
  409. return SkinWindowSetEx(hWnd,nSkinType,nID,nURFType,SkinFile,hInst,szResType);
  410. };
  411. //----------------------------
  412. private:
  413. BOOL m_bValid  ;  
  414. HMODULE m_hDll ;
  415. APPFACE_START          pfnStart         ;
  416. APPFACE_STARTW         pfnStartW        ;
  417. APPFACE_REMOVE         pfnRemove        ;
  418. APPFACE_SKINWINDOW     pfnSkinWindow    ;
  419. APPFACE_THREAD         pfnThread        ;
  420. APPFACE_BKCREATE       pfnBkCreate      ;
  421. APPFACE_BKDRAW         pfnBkDraw        ;
  422. APPFACE_BKDELETE       pfnBkDelete      ;
  423. APPFACE_SKINWINDOWEX   pfnSkinWindowEx  ;
  424. APPFACE_SKINWINDOWEXW  pfnSkinWindowExW ;
  425. protected:
  426. void Release()
  427. {
  428. try{  
  429. if(m_hDll)
  430. {
  431. FreeLibrary(m_hDll)    ;
  432. m_hDll = NULL          ;
  433. m_bValid = false       ;
  434. pfnStart = NULL        ;
  435. pfnStartW= NULL        ;
  436. pfnRemove= NULL        ;
  437. pfnSkinWindow = NULL   ;
  438. pfnBkCreate   = NULL   ;
  439. pfnBkDraw     = NULL   ;
  440. pfnBkDelete   = NULL   ;
  441. pfnSkinWindowEx  = NULL;
  442. pfnSkinWindowExW = NULL;
  443. }
  444. }catch(...){}
  445. };
  446. };
  447. #endif //__cplusplus
  448. #endif  //__APPFACE_H__