SkinPPInc.h
上传用户:jydyjx
上传日期:2008-09-26
资源大小:16786k
文件大小:21k
源码类别:

破解

开发平台:

C++ Builder

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // This is a part of the Skin++ Library
  5. // Copyright (C) 2002-2006 YongJinSoft Ltd.(http://www.uipower.com)
  6. // All rights reserved.
  7. //
  8. // This source code can be used, distributed or modified
  9. // only under terms and conditions 
  10. // of the accompanying license agreement.
  11. //*******************************************************************************
  12. #ifndef __SKINPPINC_H
  13. #define __SKINPPINC_H
  14. #if _MSC_VER >= 1000
  15. #pragma once 
  16. #endif // _MSC_VER >= 1000
  17. #pragma pack(push, 8)
  18. //功能 : 加载皮肤
  19. //返回值: 成功返回True,失败返回False
  20. BOOL __stdcall sppLoadSkin(
  21. LPCTSTR strSkinFile, //皮肤路径
  22. BOOL bWithoutHook = FALSE); //该参数指定加载皮肤时是否开启Hook功能.
  23. //功能 : 设置是否进行Hook
  24. //返回值: 成功返回True,失败返回False
  25. BOOL __stdcall sppSetHookMessage(
  26. BOOL bHook, //True为开启Hook功能,False为关闭Hook功能.
  27. DWORD dwHookStyle = 0x00000000L); //HS_MENU开启菜单自动换肤功能,
  28. //HS_WINDOW开启窗口自动换肤功能,
  29. //HS_NONE关闭所有Hook,HS_ALL开启所有自动换肤功能.
  30.    
  31. //功能 : 从资源加载皮肤
  32. //返回值: 成功返回True,失败返回False
  33. BOOL __stdcall sppLoadSkinFromRes(
  34. HINSTANCE hInstance, //资源实例句柄
  35. LPCTSTR szResourceName, //资源名称
  36. LPCTSTR szResourceType, //资源类型
  37. LPCTSTR szSkinName, //皮肤名称
  38. BOOL bWithoutHook = FALSE); //是否Hook
  39. //功能 : 设置HookAPI的类型
  40. //返回值: 返回当前API类型
  41. DWORD __stdcall sppModifyHookAPIStyle(
  42. DWORD dwRemove, //移除API类型
  43. DWORD dwAdd); //添加API类型
  44. //功能 : 获得当前API类型
  45. //返回值: 返回当前API类型
  46. DWORD __stdcall sppGetHookAPIStyle();
  47. //功能 : 设置是否HookAPI
  48. //返回值: 返回设置前的HookAPI状态
  49. BOOL __stdcall sppSetHookAPI(
  50. BOOL bHookAPI); //True为API Hook,False为去掉API Hook
  51. //功能 : 获得HookAPI状态
  52. //返回值: True表示当前为HookAPI,False表示当前没有HookAPI
  53. BOOL __stdcall sppGetHookAPI();
  54. //功能 : 移除皮肤
  55. //返回值: 成功返回True,失败返回False
  56. BOOL __stdcall sppRemoveSkin();
  57. //功能 : 设置标题栏自定义按钮是否显示
  58. //返回值: 成功返回True,失败返回False
  59. BOOL __stdcall sppSetCustSysBtnVisible(
  60. UINT uResID, //按钮的ResourceID
  61. BOOL bVisible); //是否可见
  62. //功能 : 指定自定义系统按钮的Check状态
  63. //返回值: 成功返回True,失败返回False
  64. BOOL __stdcall sppSetCustSysBtnStatus(
  65. UINT uResID, //自定义系统按钮的资源ID数值
  66. BOOL bChecked = TRUE); //是否按下状态
  67. //功能 : 设置皮肤色调
  68. //返回值: 成功返回True,失败返回False
  69. BOOL __stdcall sppColorize(
  70. COLORREF clr, //皮肤色调 如果clr==-1,就恢复原来的效果
  71. double blend = 0.5, //混合透明度 0-1 , 0为无效果,1为无透明
  72. BOOL bShowDialog = FALSE); //是否显示颜色选择对话框
  73. //功能 : 弹出文件选择框选择皮肤
  74. //返回值: 成功返回True,失败返回False
  75. BOOL __stdcall sppSelectSkin(); 
  76. //功能 : 在给定的HDC上,画位图。
  77. //返回值: 成功返回True,失败返回False
  78. BOOL __stdcall sppDrawSkinBitmap(
  79. HDC hdc, //目标DC
  80. RECT rect, //绘制区域
  81. HBITMAP hBitmap, //要绘制的位图句柄
  82. BOOL bStretchAll, //是否拉伸
  83. int nTopHeight = 0, //不被拉伸的顶高
  84. int nBottomHeight = 0, //不被拉伸的底高
  85. int nLeftWidth = 0, //不被拉伸的左宽
  86. int nRightWidth = 0, //不被拉伸的右宽
  87. COLORREF clrTrans = -1, //透明色
  88. BOOL bTrans = FALSE //是否透明
  89. );
  90. //功能 : 在给定的HDC上,画位图
  91. //返回值: 成功返回True,失败返回False
  92. BOOL __stdcall sppDrawSkinImage(
  93. HDC hdc, //目标DC
  94. RECT rect, //绘制区域
  95. LPCTSTR lpszObjName, //要绘制皮肤图片名称
  96. BOOL bStretchAll, //是否拉伸
  97. int nLeftWidth, //不被拉伸的左宽
  98. int nRightWidth, //不被拉伸的右宽
  99. int nTopHeight, //不被拉伸的顶高
  100. int nBottomHeight, //不被拉伸的底高
  101. COLORREF clrTrans = -1, //透明色
  102. BOOL bTrans = FALSE //是否透明
  103. );
  104. //功能 : 获得换肤后的系统颜色
  105. //返回值: 成功返回当前皮肤的颜色,失败返回-1
  106. COLORREF __stdcall sppGetSkinSysColor(
  107. int nColorIndex); //要获取的颜色类型
  108. //功能 : 获得Windows系统默认的颜色
  109. //返回值: 成功返回Windows系统颜色,失败返回-1
  110. COLORREF __stdcall sppGetDefaultSysColor(
  111. int nColorIndex); //要获取的颜色类型
  112. //功能 : 设置窗口的资源ID,该ID会在多语言版本中用到
  113. //返回值: 成功返回True,失败返回False
  114. BOOL __stdcall sppSetWindowResID(
  115. HWND hWnd, //对话框窗口的句柄
  116. int nResID); //对话框资源ID
  117. //功能 : 获得窗口的资源ID
  118. //返回值: 成功返回资源ID,失败返回-1
  119. int __stdcall sppGetWindowResID(
  120. HWND hWnd); //对话框窗口的句柄
  121. //功能 : 设置异型窗口的资源ID
  122. //返回值: 成功返回True,失败返回False
  123. BOOL __stdcall sppSetFreeWindowID(
  124. HWND hWnd, //对话框窗口的句柄
  125. int nResID); //资源ID
  126. //功能 : 获得异型窗口的资源ID
  127. //返回值: 成功返回资源ID,失败返回-1
  128. int __stdcall sppGetFreeWindowID(
  129. HWND hWnd); //对话框窗口的句柄
  130. //功能 : 设置窗口自画是否自己来处理,该方法用于自画部分需要自己处理的情况下
  131. //返回值: 成功返回True,失败返回False
  132. BOOL __stdcall sppSetCustomDraw(
  133. HWND hWnd, //自画窗口句柄
  134. BOOL bCustomDraw); //TRUE为自己处理自画,FALSE为交给Skin++处理自画
  135. //功能 : 设置窗口是否计算RGN区域
  136. //返回值: 成功返回True,失败返回False
  137. BOOL __stdcall sppSetRgnEnable(
  138. HWND hWnd, //窗口句柄
  139. BOOL bRgnEnable); //True为计算区域,FALSE为不计算区域
  140. //功能 : 设置ListHeader窗口的排序信息
  141. //返回值: 成功返回True,失败返回False
  142. BOOL __stdcall sppSetListHeaderSortInfo(
  143. HWND hWnd, //ListHeader的窗口句柄
  144. int nSortColumn, //要对ListHeader排序的列的索引
  145. BOOL bSortAscending = TRUE); //是否为升序
  146. //功能 : 设置是否自己画对话框背景,该方法用在需要自己对背景进行处理的情况下.
  147. //返回值: 成功返回True,失败返回False
  148. BOOL __stdcall sppSetDialogEraseBkgnd(
  149. HWND hWnd, //对话框句柄
  150. BOOL bErase); //TRUE 为自己画背景,FALSE 为Skin++画,
  151. //如果没有调用该方法,Skin++将画对话框背景.
  152. //功能 : 设置对话框背景是否剪切子控件区域
  153. //返回值: 成功返回True,失败返回False
  154. BOOL __stdcall sppSetDialogBkClipRgn(
  155. HWND hWnd, //对话框句柄
  156. BOOL bClip, //TRUE为不需要剪切,FALSE为需要剪切区域
  157. BOOL bAllChild = TRUE); //TRUE为该窗体的所有子对话框都剪切.
  158. //功能 : 设置按钮的提示
  159. //返回值: 成功返回True,失败返回False
  160. BOOL __stdcall sppSetButtonTooltip(
  161. HWND hWnd, //按钮句柄
  162. LPCTSTR szTooltip); //按钮提示文本
  163. //功能 : 对指定的窗口去掉皮肤,并且保证不会再被换肤,即使使用SetSkinHwnd也不会换肤.
  164. //返回值: 成功返回True,失败返回False
  165. BOOL __stdcall sppSetNoSkinHwnd(
  166. HWND hWnd, //窗口句柄
  167. BOOL bChildNoSkin = TRUE); //是否对该窗口中的子窗口去掉皮肤
  168. //功能 : 对指定的窗口进行换肤
  169. //返回值: 成功返回True,失败返回False
  170. BOOL __stdcall sppSetSkinHwnd(
  171. HWND hWnd, //窗口句柄
  172. LPCTSTR szClassName = NULL, //要子类化的Skin类型 WC_DIALOGBOX/WC_CONTROLBAR等
  173. BOOL bChildSkin = TRUE); //是否对该窗口中的子窗口加上皮肤
  174. //功能 : 对指定的窗口临时去掉皮肤,可以通过SetSkinHwnd进行再次换肤
  175. //返回值: 成功返回True,失败返回False
  176. BOOL __stdcall sppRemoveSkinHwnd(
  177. HWND hWnd); //窗口句柄
  178. //功能 : 获得Skin++的系统Metrics,作用同Windows API函数GetSystemMetrics,
  179. // 取得Skin++实际的标题栏高度,菜单条高度等数值
  180. //返回值: 成功返回Skin++的Metrics,失败返回-1
  181. int __stdcall sppGetSystemMetrics(
  182. HWND hWnd, //窗体句柄
  183. int nIndex); //参数同GetSystemMetrics
  184. //功能 : 多线程换肤用
  185. //返回值: 成功返回True,失败返回False
  186. BOOL __stdcall sppInitializeSkin();
  187. //功能 : 退出界面库,做清理工作。
  188. //返回值: 成功返回True,失败返回False
  189. BOOL __stdcall sppExitSkin();
  190. //功能 : 设置窗口是否刷新
  191. //返回值 : 成功返回True,失败返回False
  192. //备注 : 在数据窗口添加数据时会导致刷新比较慢,
  193. //这个时候可以用这个接口锁定刷新,数据插入完成后需重新开启刷新
  194. BOOL __stdcall sppSetRedraw(
  195. HWND hWnd, //窗口句柄
  196. BOOL bRedraw); //True为刷新,False为锁定刷新
  197. //功能 : 验证Skin++版本是否与当前程序的开发工具相匹配
  198. //返回值 : 成功返回True,失败返回False
  199. BOOL _stdcall sppValidateDevTools();
  200. //[For PowerBuilder]
  201. //功能 : 设置Tab控件的标签页的位置
  202. //返回值 : 成功返回True,失败返回False
  203. enum TABPOSITION
  204. {
  205. TABPOS_UNKNOWN =   0x00,
  206. TABPOS_TABSONTOP = 0x01,
  207. TABPOS_TABSONTOPANDBOTTOM = 0x02,
  208. TABPOS_TABSONLEFT = 0x03,
  209. TABPOS_TABSONLEFTANDRIGHT = 0x04,
  210. TABPOS_TABSONBOTTOM = 0x05,
  211. TABPOS_TABSONBOTTOMANDTOP = 0x06,
  212. TABPOS_TABSONRIGHT = 0x07,
  213. TABPOS_TABSONRIGHTANDLEFT = 0x08
  214. };
  215. BOOL __stdcall sppSetTabCtrlPosition(
  216. HWND hWnd, //Tab控件的窗口句柄
  217. TABPOSITION enumPosition, //TABPOSITION的枚举值
  218. BOOL bPictureOnRight = FALSE); //图标是否显示在文本的右侧
  219. //[For PowerBuilder]
  220. //功能 : 设置Tab控件的标签页显示的索引值
  221. //返回值 : 成功返回True,失败返回False
  222. BOOL __stdcall sppSetTabCtrlItemsStatus(
  223. HWND    hWnd, //Tab控件的窗口句柄
  224. int* pIndexs, //显示标签页的Index集合
  225. int nCount //显示标签页的总个数
  226. );
  227. //功能 : 是对SetNoSkinHwnd的进一步处理,可以解决使用sppSetNoSkinHwnd引起的Debug版的断言错
  228. #define SETNOSKINHWND(x) {
  229.     HWND w=(x).UnsubclassWindow();
  230. sppSetNoSkinHwnd(w);
  231. (x).SubclassWindow(w);
  232. }
  233. #ifdef _SKINPP_DYNAMICCALLDLL
  234. class CSkinPPDynamicCallDll
  235. {
  236. public:
  237. typedef BOOL (__stdcall *SPPLOADSKIN)(LPCTSTR strSkinFile,BOOL bWithoutHook);
  238. typedef BOOL (__stdcall *SPPSETHOOKMESSAGE)(BOOL bHook,DWORD dwHookStyle);
  239. typedef BOOL (__stdcall *SPPLOADSKINFROMRES)(HINSTANCE hInstance,LPCTSTR szResourceName,LPCTSTR szResourceType,LPCTSTR szSkinName,BOOL bWithoutHook);
  240. typedef DWORD (__stdcall *SPPMODIFYHOOKAPISTYLE)(DWORD dwRemove,DWORD dwAdd);
  241. typedef DWORD (__stdcall *SPPGETHOOKAPISTYLE)();
  242. typedef BOOL (__stdcall *SPPSETHOOKAPI)(BOOL bHookAPI);
  243. typedef BOOL (__stdcall *SPPGETHOOKAPI)();
  244. typedef BOOL (__stdcall *SPPREMOVESKIN)();
  245. typedef BOOL (__stdcall *SPPSETCUSTSYSBTNVISIBLE)(UINT uResID,BOOL bVisible);
  246. typedef BOOL (__stdcall *SPPSETCUSTSYSBTNSTATUS)(UINT uResID,BOOL bChecked);
  247. typedef BOOL (__stdcall *SPPCOLORIZE)(COLORREF clr,double blend,BOOL bShowDialog);
  248. typedef BOOL (__stdcall *SPPSELECTSKIN)(); 
  249. typedef BOOL (__stdcall *SPPDRAWSKINBITMAP)(HDC hdc,RECT rect,HBITMAP hBitmap,BOOL bStretchAll,
  250. int nTopHeight,int nBottomHeight,int nLeftWidth,
  251. int nRightWidth,COLORREF clrTrans,BOOL bTrans);
  252. typedef BOOL (__stdcall *SPPDRAWSKINIMAGE)(HDC hdc,RECT rect,LPCTSTR lpszObjName,BOOL bStretchAll,
  253. int nLeftWidth,int nRightWidth,int nTopHeight,
  254. int nBottomHeight,COLORREF clrTrans,BOOL bTrans);
  255. typedef COLORREF (__stdcall *SPPGETSKINSYSCOLOR)(int nColorIndex);
  256. typedef COLORREF (__stdcall *SPPGETDEFAULTSYSCOLOR)();
  257. typedef BOOL (__stdcall *SPPSETWINDOWRESID)(HWND hWnd,int nResID);
  258. typedef int (__stdcall *SPPGETWINDOWRESID)(HWND hWnd);
  259. typedef BOOL (__stdcall *SPPSETFREEWINDOWID)(HWND hWnd,int nResID);
  260. typedef int (__stdcall *SPPGETFREEWINDOWID)(HWND hWnd);
  261. typedef BOOL (__stdcall *SPPSETCUSTOMDRAW)(HWND hWnd,BOOL bCustomDraw);
  262. typedef BOOL (__stdcall *SPPSETRGNENABLE)(HWND hWnd,BOOL bRgnEnable);
  263. typedef BOOL (__stdcall *SPPSETLISTHEADERSORTINFO)(HWND hWnd,int nSortColumn,BOOL bSortAscending);
  264. typedef BOOL (__stdcall *SPPSETDIALOGERASEBKGND)(HWND hWnd,BOOL bErase);
  265. typedef BOOL (__stdcall *SPPSETDIALOGBKCLIPRGN)(HWND hWnd,BOOL bClip,BOOL bAllChild);
  266. typedef BOOL (__stdcall *SPPSETBUTTONTOOLTIP)(HWND hWnd,LPCTSTR szTooltip);
  267. typedef BOOL (__stdcall *SPPSETNOSKINHWND)(HWND hWnd,BOOL bChildNoSkin);
  268. typedef BOOL (__stdcall *SPPSETSKINHWND)(HWND hWnd,LPCTSTR szClassName,BOOL bChildSkin);
  269. typedef BOOL (__stdcall *SPPREMOVESKINHWND)(HWND hWnd);
  270. typedef int (__stdcall *SPPGETSYSTEMMETRICS)(HWND hWnd,int nIndex);
  271. typedef BOOL (__stdcall *SPPINITIALIZESKIN)();
  272. typedef BOOL (__stdcall *SPPEXITSKIN)();
  273. typedef BOOL (__stdcall *SPPSETREDRAW)(HWND hWnd,BOOL bRedraw);
  274. typedef BOOL (__stdcall *SPPVALIDATEDEVTOOLS)();
  275. SPPLOADSKIN LoadSkin;
  276. SPPSETHOOKMESSAGE SetHookMessage;
  277. SPPLOADSKINFROMRES LoadSkinFromRes;
  278. SPPMODIFYHOOKAPISTYLE ModifyHookAPIStyle;
  279. SPPGETHOOKAPISTYLE GetHookAPIStyle;
  280. SPPSETHOOKAPI SetHookAPI;
  281. SPPGETHOOKAPI GetHookAPI;
  282. SPPREMOVESKIN RemoveSkin;
  283. SPPSETCUSTSYSBTNVISIBLE SetCustSysBtnVisible;
  284. SPPSETCUSTSYSBTNSTATUS SetCustSysBtnStatus;
  285. SPPCOLORIZE Colorize;
  286. SPPSELECTSKIN SelectSkin;
  287. SPPDRAWSKINBITMAP DrawSkinBitmap;
  288. SPPDRAWSKINIMAGE DrawSkinImage;
  289. SPPGETSKINSYSCOLOR GetSkinSysColor;
  290. SPPGETDEFAULTSYSCOLOR GetDefaultSysColor;
  291. SPPSETWINDOWRESID SetWindowResID;
  292. SPPGETWINDOWRESID GetWindowResID;
  293. SPPSETFREEWINDOWID SetFreeWindowID;
  294. SPPGETFREEWINDOWID GetFreeWindowID;
  295. SPPSETCUSTOMDRAW SetCustomDraw;
  296. SPPSETRGNENABLE SetRgnEnable;
  297. SPPSETLISTHEADERSORTINFO SetListHeaderSortInfo;
  298. SPPSETDIALOGERASEBKGND SetDialogEraseBkgnd;
  299. SPPSETDIALOGBKCLIPRGN SetDialogBkClipRgn;
  300. SPPSETBUTTONTOOLTIP SetButtonTooltip;
  301. SPPSETNOSKINHWND SetNoSkinHwnd;
  302. SPPSETSKINHWND SetSkinHwnd;
  303. SPPREMOVESKINHWND RemoveSkinHwnd;
  304. SPPGETSYSTEMMETRICS GetSystemMetrics;
  305. SPPINITIALIZESKIN InitializeSkin;
  306. SPPEXITSKIN ExitSkin;
  307. SPPSETREDRAW SetRedraw;
  308. SPPVALIDATEDEVTOOLS ValidateDevTools;
  309. CSkinPPDynamicCallDll() 
  310. {
  311. }
  312. CSkinPPDynamicCallDll(LPCTSTR strDllPathName)
  313. {
  314. Initialize(strDllPathName);
  315. }
  316. virtual ~CSkinPPDynamicCallDll()
  317. {
  318. Exit();
  319. }
  320. BOOL Initialize(LPCTSTR strDllPathName) 
  321. {
  322. if (m_hModuleDll)
  323. return FALSE;
  324. if (strDllPathName == NULL/* || _tcslen(strDllPathName) == 0*/)
  325. {
  326. #ifdef _UNICODE
  327. m_hModuleDll = ::LoadLibraryW(L"SkinPlusPlusU.dll");
  328. #else
  329. m_hModuleDll = ::LoadLibraryA("SkinPlusPlus.dll");
  330. #endif
  331. }
  332. else
  333. m_hModuleDll = ::LoadLibrary(strDllPathName);
  334. if (!m_hModuleDll)
  335. return FALSE;
  336. LoadSkin = (SPPLOADSKIN)GetProcAddress(m_hModuleDll,"sppLoadSkin");
  337. SetHookMessage = (SPPSETHOOKMESSAGE)GetProcAddress(m_hModuleDll,"sppSetHookMessage");
  338. LoadSkinFromRes = (SPPLOADSKINFROMRES)GetProcAddress(m_hModuleDll,"sppLoadSkinFromRes");
  339. ModifyHookAPIStyle = (SPPMODIFYHOOKAPISTYLE)GetProcAddress(m_hModuleDll,"sppModifyHookAPIStyle");
  340. GetHookAPIStyle = (SPPGETHOOKAPISTYLE)GetProcAddress(m_hModuleDll,"sppGetHookAPIStyle");
  341. SetHookAPI = (SPPSETHOOKAPI)GetProcAddress(m_hModuleDll,"sppSetHookAPI");
  342. GetHookAPI = (SPPGETHOOKAPI)GetProcAddress(m_hModuleDll,"sppGetHookAPI");
  343. RemoveSkin = (SPPREMOVESKIN)GetProcAddress(m_hModuleDll,"sppRemoveSkin");
  344. SetCustSysBtnVisible = (SPPSETCUSTSYSBTNVISIBLE)GetProcAddress(m_hModuleDll,"sppSetCustSysBtnVisible");
  345. SetCustSysBtnStatus = (SPPSETCUSTSYSBTNSTATUS)GetProcAddress(m_hModuleDll,"sppSetCustSysBtnStatus");
  346. Colorize = (SPPCOLORIZE)GetProcAddress(m_hModuleDll,"sppColorize");
  347. SelectSkin = (SPPSELECTSKIN)GetProcAddress(m_hModuleDll,"sppSelectSkin");
  348. DrawSkinBitmap = (SPPDRAWSKINBITMAP)GetProcAddress(m_hModuleDll,"sppDrawSkinBitmap");
  349. DrawSkinImage = (SPPDRAWSKINIMAGE)GetProcAddress(m_hModuleDll,"sppDrawSkinImage");
  350. GetSkinSysColor = (SPPGETSKINSYSCOLOR)GetProcAddress(m_hModuleDll,"sppGetSkinSysColor");
  351. GetDefaultSysColor = (SPPGETDEFAULTSYSCOLOR)GetProcAddress(m_hModuleDll,"sppGetDefaultSysColor");
  352. SetWindowResID = (SPPSETWINDOWRESID)GetProcAddress(m_hModuleDll,"sppSetWindowResID");
  353. GetWindowResID = (SPPGETWINDOWRESID)GetProcAddress(m_hModuleDll,"sppGetWindowResID");
  354. SetFreeWindowID = (SPPSETFREEWINDOWID)GetProcAddress(m_hModuleDll,"sppSetFreeWindowID");
  355. GetFreeWindowID = (SPPGETFREEWINDOWID)GetProcAddress(m_hModuleDll,"sppGetFreeWindowID");
  356. SetCustomDraw = (SPPSETCUSTOMDRAW)GetProcAddress(m_hModuleDll,"sppSetCustomDraw");
  357. SetRgnEnable = (SPPSETRGNENABLE)GetProcAddress(m_hModuleDll,"sppSetRgnEnable");
  358. SetListHeaderSortInfo = (SPPSETLISTHEADERSORTINFO)GetProcAddress(m_hModuleDll,"sppSetListHeaderSortInfo");
  359. SetDialogEraseBkgnd = (SPPSETDIALOGERASEBKGND)GetProcAddress(m_hModuleDll,"sppSetDialogEraseBkgnd");
  360. SetDialogBkClipRgn = (SPPSETDIALOGBKCLIPRGN)GetProcAddress(m_hModuleDll,"sppSetDialogBkClipRgn");
  361. SetButtonTooltip = (SPPSETBUTTONTOOLTIP)GetProcAddress(m_hModuleDll,"sppSetButtonTooltip");
  362. SetNoSkinHwnd = (SPPSETNOSKINHWND)GetProcAddress(m_hModuleDll,"sppSetNoSkinHwnd");
  363. SetSkinHwnd = (SPPSETSKINHWND)GetProcAddress(m_hModuleDll,"sppSetSkinHwnd");
  364. RemoveSkinHwnd = (SPPREMOVESKINHWND)GetProcAddress(m_hModuleDll,"sppRemoveSkinHwnd");
  365. GetSystemMetrics = (SPPGETSYSTEMMETRICS)GetProcAddress(m_hModuleDll,"sppGetSystemMetrics");
  366. InitializeSkin = (SPPINITIALIZESKIN)GetProcAddress(m_hModuleDll,"sppInitializeSkin");
  367. ExitSkin = (SPPEXITSKIN)GetProcAddress(m_hModuleDll,"sppExitSkin");
  368. SetRedraw = (SPPSETREDRAW)GetProcAddress(m_hModuleDll,"sppSetRedraw");
  369. ValidateDevTools = (SPPVALIDATEDEVTOOLS)GetProcAddress(m_hModuleDll,"sppValidateDevTools");
  370. return TRUE;
  371. }
  372. BOOL Exit()
  373. {
  374. if (!m_hModuleDll)
  375. return FALSE;
  376. ::FreeLibrary(m_hModuleDll);
  377. m_hModuleDll = NULL;
  378. LoadSkin = NULL;
  379. SetHookMessage = NULL;
  380. LoadSkinFromRes = NULL;
  381. ModifyHookAPIStyle = NULL;
  382. GetHookAPIStyle = NULL;
  383. SetHookAPI = NULL;
  384. GetHookAPI = NULL;
  385. RemoveSkin = NULL;
  386. SetCustSysBtnVisible = NULL;
  387. SetCustSysBtnStatus = NULL;
  388. Colorize = NULL;
  389. SelectSkin = NULL;
  390. DrawSkinBitmap = NULL;
  391. DrawSkinImage = NULL;
  392. GetSkinSysColor = NULL;
  393. GetDefaultSysColor = NULL;
  394. SetWindowResID = NULL;
  395. GetWindowResID = NULL;
  396. SetFreeWindowID = NULL;
  397. GetFreeWindowID = NULL;
  398. SetCustomDraw = NULL;
  399. SetRgnEnable = NULL;
  400. SetListHeaderSortInfo = NULL;
  401. SetDialogEraseBkgnd = NULL;
  402. SetDialogBkClipRgn = NULL;
  403. SetButtonTooltip = NULL;
  404. SetNoSkinHwnd = NULL;
  405. SetSkinHwnd = NULL;
  406. RemoveSkinHwnd = NULL;
  407. GetSystemMetrics = NULL;
  408. InitializeSkin = NULL;
  409. ExitSkin = NULL;
  410. SetRedraw = NULL;
  411. ValidateDevTools = NULL;
  412. return TRUE;
  413. }
  414. private:
  415. HMODULE m_hModuleDll;
  416. };
  417.  
  418. #endif //_SKINPP_DYNAMICCALLDLL
  419. #ifdef _SKINPP_STATIC //static 
  420. #ifdef _AFXDLL 
  421. //---------------------------------------------
  422. // MFC shared DLL, Skin++ static library
  423. //---------------------------------------------
  424. #ifdef _DEBUG
  425. #ifdef _UNICODE
  426. #pragma comment(lib, "SkinPPStaticDDU.lib")
  427. #pragma message("Automatically linking with SkinPPStaticDDU.lib")
  428. #else
  429. #pragma comment(lib, "SkinPPStaticDDA.lib")
  430. #pragma message("Automatically linking with SkinPPStaticDDA.lib")
  431. #endif //UNICODE
  432. #else //Release
  433. #ifdef _UNICODE
  434. #pragma comment(lib, "SkinPPStaticDRU.lib")
  435. #pragma message("Automatically linking with SkinPPStaticDRU.lib")
  436. #else
  437. #pragma comment(lib, "SkinPPStaticDRA.lib")
  438. #pragma message("Automatically linking with SkinPPStaticDRA.lib")
  439. #endif
  440. #endif //_DEBUG
  441. #else //MFC static library
  442. //--------------------------------------------------
  443. // MFC static library, Skin++ static library
  444. //--------------------------------------------------
  445. #ifdef _DEBUG
  446. #ifdef _UNICODE
  447. #pragma comment(lib, "SkinPPStaticSDU.lib")
  448. #pragma message("Automatically linking with SkinPPStaticSDU.lib")
  449. #else
  450. #pragma comment(lib, "SkinPPStaticSDA.lib")
  451. #pragma message("Automatically linking with SkinPPStaticSDA.lib")
  452. #endif
  453. #else
  454. #ifdef _UNICODE
  455. #pragma comment(lib, "SkinPPStaticSRU.lib")
  456. #pragma message("Automatically linking with SkinPPStaticSRU.lib")
  457. #else
  458. #pragma comment(lib, "SkinPPStaticSRA.lib")
  459. #pragma message("Automatically linking with SkinPPStaticSRA.lib")
  460. #endif
  461. #endif //_DEBUG
  462. #endif //_AFXDLL
  463. #elif !defined _SKINPP_DYNAMICCALLDLL //DLL 
  464. //------------------------------------------
  465. // MFC shared DLL, Skin++ shared DLL
  466. //------------------------------------------
  467. #ifdef _UNICODE
  468. #pragma comment(lib,"SkinPlusPlusU.lib")  
  469. #pragma message("Automatically linking with SkinPlusPlusU.dll")
  470. #else
  471. #pragma comment(lib,"SkinPlusPlus.lib")
  472. #pragma message("Automatically linking with SkinPlusPlus.dll") 
  473. #endif
  474. #endif //_SKINPP_STATIC
  475. #ifndef WM_TOOLBARPAINTPRE
  476. #define WM_TOOLBARPAINTPRE WM_USER + 0x0322
  477. #endif
  478. #ifndef WM_TOOLBARPAINTEND
  479. #define WM_TOOLBARPAINTEND WM_USER + 0x0323
  480. #endif
  481. #ifndef SM_LBUTTONUP
  482. #define SM_LBUTTONUP WM_USER + 0x0324
  483. #endif
  484. #ifndef SM_TITLELBUTTONUP
  485. #define SM_TITLELBUTTONUP WM_USER + 0x0325
  486. #endif
  487. #ifndef SM_TITLELBUTTONDOWN
  488. #define SM_TITLELBUTTONDOWN WM_USER + 0x0326
  489. #endif
  490. //HookMsg
  491. #define HS_MENU 0x80000000L
  492. #define HS_WINDOW 0x40000000L
  493. #define HS_NONE 0x00000000L
  494. #define HS_ALL HS_MENU | HS_WINDOW
  495. //HookAPI
  496. #define HOOKAPI_SCROLLBAR 0x80000000L
  497. #define HOOKAPI_GETSYSCOLOR 0x40000000L
  498. #define HOOKAPI_FILLRECT 0x20000000L
  499. #define HOOKAPI_OTHER 0x10000000L
  500. #define HOOKAPI_NONE 0x00000000L
  501. #define HOOKAPI_ALL HOOKAPI_SCROLLBAR | HOOKAPI_GETSYSCOLOR | HOOKAPI_FILLRECT | HOOKAPI_OTHER
  502. #pragma pack(pop)
  503. #endif // __SKINPPINC_H