自己用VC写的禁止QQ登录的小程序 展示 SkinPPWTL.h源代码


  1. #ifndef _SKINPPWTL_H_
  2. #define _SKINPPWTL_H_
  3. // Download by http://www.bvbsoft.com
  4. #ifdef _SKINPP_STATIC
  5.          #define SKINPPWTL_API
  6. #else
  7.          #ifdef SKINPPWTL_EXPORTS
  8.                  #define SKINPPWTL_API __declspec(dllexport)
  9.          #else
  10.                  #define SKINPPWTL_API __declspec(dllimport)
  11.          #endif
  12. #endif
  13.  
  14. #define WM_TOOLBARPAINTPRE (WM_USER + 802)
  15. #define WM_TOOLBARPAINTEND (WM_USER + 803)
  16.  
  17. #define SM_LBUTTONUP (WM_USER + 804)
  18.  
  19. //按钮状态
  20. enum BUTTONSTATE
  21. {
  22.         NORMAL   =  0,
  23.         PRESS    =  1,
  24.         DISABLE  =  2,
  25.         HOT              =  3,
  26.         FOCUS    =  4,
  27.         LAST     =  5
  28. } ;
  29.  
  30. //绘制类型
  31. enum DRAWTYPE
  32. {
  33.         BUTTON  =  0,
  34.         SCROLLARROWUP  =  1,
  35.         SCROLLARROWDOWN  =  2,
  36.         SPLITTERBARHORZ  =  3,
  37.         SPLITTERBARVERT  =  4,
  38.         SPLITTERBARBORDER  =  5,
  39.         LISTHEAD  =  6
  40. } ;
  41.  
  42. //获得皮肤资源的类型
  43. enum SKINOBJTYPE
  44. {
  45.         DIALOGTYPE  =  0,
  46.         BUTTONTYPE  =  1,
  47.         CHECKBOXTYPE  =  2,
  48.         RADIOBOXTYPE  =  3,
  49.         STATICTYPE  =  4,
  50.         TRACKBARTYPE  =  5,
  51. } ;
  52.  
  53. struct ListBoxItem
  54. {
  55.         HIMAGELIST      hImageList ;
  56.          int                     nImageIndex ;
  57.  
  58.         ListBoxItem ( )
  59.          {
  60.                 hImageList  =  NULL ;
  61.                 nImageIndex  =  - 1 ;
  62.          }
  63. } ;
  64.  
  65. #define REST_BITMAP      0x0001 //.bmp
  66. #define REST_ICON        0x0002 //.ico
  67. #define REST_CURSOR      0x0003 //.cur
  68. #define REST_ANIMATE     0x0004 //.ani
  69.  
  70. typedef  struct _ResourceInfo
  71. {
  72.         HGDIOBJ hGdiObj ; //[OUT]
  73.         DWORD   dwType ;  //[OUT]
  74.          int             nWidth ;  //[OUT]
  75.          int             nHeight ; //[OUT]
  76.  
  77.         TCHAR   szResImageName [_MAX_FNAME ] ; //[IN]
  78.         BOOL    bHorzSplit ; //[IN]
  79.          int             nLength ; //[IN]
  80.          int             nCount ;  //[IN]
  81.          int             nIndex ;  //[IN]
  82.        
  83.         _ResourceInfo ( )
  84.          {
  85.                 hGdiObj  =  NULL ;
  86.                 dwType  = REST_BITMAP ;
  87.                 nWidth  =  0 ;
  88.                 nHeight  =  0 ;
  89.  
  90.                 _tcscpy (szResImageName,_T ( "" ) ) ;
  91.                 bHorzSplit  = TRUE ;
  92.                 nLength  =  - 1 ;
  93.                 nCount  =  - 1 ;
  94.                 nIndex  =  - 1 ;
  95.          }
  96.        
  97. }ResInfo, * PRESINFO ;
  98.  
  99. //
  100.  
  101. //加载皮肤
  102. //SkinFile              :皮肤路径,注意可以是*.ssk,也可以是皮肤目录中的INI文件.
  103. //bFromIni              :该参数指定皮肤文件是从*.ssk读取,还是从INI文件读取.
  104. SKINPPWTL_API BOOL  skinppLoadSkin (TCHAR * szSkinFile,BOOL bFromIni  = FALSE ) ;
  105.  
  106. SKINPPWTL_API BOOL skinppLoadSkinFromRes (HINSTANCE hInstance,LPCTSTR szResourceName,
  107.                                                                                  LPCTSTR szResourceType,TCHAR * szSkinFileName ) ;
  108.  
  109. //移除皮肤
  110. SKINPPWTL_API BOOL  skinppRemoveSkin ( ) ;
  111.  
  112. //退出界面库,做清理工作。
  113. SKINPPWTL_API BOOL  skinppExitSkin ( ) ;
  114.  
  115. //设置ListBox控件的自画信息
  116. //hWnd                  : ListBox控件的句柄
  117. //nIndex                : Item项的索引
  118. //pListBoxItem  : Item项自画的结构信息
  119. SKINPPWTL_API  void skinppSetListBoxItemDrawInfo (HWND hWnd, int nIndex, struct ListBoxItem * pListBoxItem ) ;
  120.  
  121. //获得换肤后的系统颜色
  122. //nColorIndex   : 要获取的颜色类型
  123. SKINPPWTL_API COLORREF skinppGetSkinSysColor ( int nColorIndex ) ;
  124.  
  125. //获得Windows系统默认的颜色
  126. //nColorIndex   : 要获取的颜色类型
  127. SKINPPWTL_API COLORREF skinppGetDefaultSysColor ( int nColorIndex ) ;
  128.  
  129. //hWnd                  : 对话框窗口的句柄
  130. //nResID                : 对话框资源ID
  131. SKINPPWTL_API BOOL skinppSetWindowResID (HWND hWnd, int nResID ) ; //[多语言]
  132.  
  133. SKINPPWTL_API BOOL skinppSetFreeDlgID (HWND hWnd, int nResID ) ;
  134.  
  135. SKINPPWTL_API BOOL skinppSetSkinResID (HWND hWnd, int nResID ) ;
  136.  
  137. //设置ListHeader窗口的排序信息
  138. //hWnd                  : ListHeader的窗口句柄
  139. //nSortColumn   : 要对ListHeader排序的列的索引
  140. //bSortAscending: 是否为升序
  141. SKINPPWTL_API  void skinppSetListHeaderSortInfo (HWND hWnd, int nSortColumn,BOOL bSortAscending  = TRUE ) ;
  142.  
  143. //在给定的HDC上,指定相应的绘制类型和状态,在相应的矩形区域中进行绘制.
  144. //hdc                   :目标DC
  145. //rect                  :绘制区域
  146. //eDrawType             :绘制类型,目前支持SPLITTERBARHORZ,SPLITTERBARVERT,SPLITTERBARBORDER
  147. //nState                :选择绘制状态
  148. SKINPPWTL_API  void  skinppDrawSkinObject (HDC hdc,RECT rect,DRAWTYPE eDrawType, int nState ) ;
  149.  
  150. //通过资源ID,获得相应类型的皮肤资源位图句柄
  151. //nSkinObjType  : 皮肤类型,目前支持     DIALOGTYPE,BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE
  152. //nResID                : 资源ID
  153. //nState                : 状态,对BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE有效
  154. SKINPPWTL_API HBITMAP skinppGetResFromID (SKINOBJTYPE nSkinObjType, int nResID, int nState  = 0  ) ;
  155.  
  156. //设置是否自己画对话框背景,该方法用在需要自己对背景进行处理的情况下.
  157. //hWnd                  : 对话框的句柄
  158. //bErase                : TRUE 为自己画背景,FALSE 为Skin++画,如果没有调用该方法,Skin++将画对话框背景.
  159. SKINPPWTL_API  void skinppSetDialogEraseBkgnd (HWND hWnd,BOOL bErase ) ;
  160.  
  161. //设置对话框背景是否剪切子控件区域。
  162. //hWnd                  : 对话框句柄
  163. //bNoClip               : TRUE为不需要剪切,FALSE为需要剪切区域
  164. //bAllChild             : TRUE为该窗体的所有子对话框都剪切.
  165. SKINPPWTL_API  void skinppSetDialogBkClipRgn (HWND hWnd,BOOL bClip,BOOL bAllChild  = TRUE ) ;
  166.  
  167. //通过皮肤资源名称获得皮肤资源中位图
  168. //szName                : 皮肤资源名称
  169. //HBITMAP               : 返回资源中的位图
  170. SKINPPWTL_API HBITMAP skinppGetBitmapRes (LPCTSTR szName ) ;
  171.  
  172. //通过资源名称取资源的内存指针
  173. //szName                : 资源名称
  174. //nSize                 : 资源大小
  175. //pByte                 : 返回值,成功返回非NULL,失败返回NULL
  176. SKINPPWTL_API BYTE *  skinppGetSkinResource (LPCTSTR szName, int & nSize ) ;
  177.  
  178. //通过皮肤资源的名称获得位图不被拉伸的区域值
  179. //szName                : 皮肤资源名称
  180. //nTopHeight    : 返回不被拉伸的顶高
  181. //nBottomHeight : 返回不被拉伸的底高
  182. //nLeftWidth    : 返回不被拉伸的左宽
  183. //nRightWidth   : 返回不被拉伸的右宽
  184. SKINPPWTL_API BOOL skinppGetBitmapResRect (LPCTSTR szName, int & nTopHeight, int & nBottomHeight,
  185.                                                                                                     int & nLeftWidth, int & nRightWidth ) ;
  186.  
  187. //设置窗口自画是否自己来处理,该方法用于自画部分需要自己处理的情况下
  188. //hWnd                  : 要自画的窗口句柄
  189. //bCustomDraw   : TRUE为自己处理自画,FALSE为交给Skin++处理自画
  190. SKINPPWTL_API  void skinppSetCustomDraw (HWND hWnd,BOOL bCustomDraw ) ;
  191.  
  192. //设置菜单的皮肤标识
  193. //hWnd                  : 拥有菜单的窗口句柄
  194. //nSkinObjectID : 菜单皮肤的标识
  195. SKINPPWTL_API  void skinppSetMenuSkinObjectID (HWND hWnd, int nSkinObjectID ) ;
  196.  
  197. //设置是否对自画菜单进行换肤
  198. //bSkin                 : TRUE为换肤
  199. SKINPPWTL_API  void skinppSetSkinOwnerMenu (BOOL bSkin ) ;
  200.  
  201. //对菜单进行换肤控制
  202. //hMenu   : 想换肤的菜单句柄
  203. //bNoSkin : 是否换肤,TRUE为不换肤,FALSE为换肤
  204. SKINPPWTL_API  void  skinppSetDrawMenu (HMENU hMenu,BOOL bNoSkin ) ;
  205.        
  206. //对指定的窗口去掉皮肤,并且保证不会再被换肤,即使使用SetSkinHwnd也不会换肤.
  207. //hWnd                  : 指定的窗口句柄
  208. //bChildNoSkin  : 是否对该窗口中的子窗口去掉皮肤
  209. SKINPPWTL_API  void skinppSetNoSkinHwnd (HWND hWnd,BOOL bChildNoSkin  = TRUE ) ;
  210.  
  211. //对指定的窗口进行换肤
  212. //hWnd                  : 指定的窗口句柄
  213. //szClassName   : 要子类化的Skin类型 WC_DIALOGBOX/WC_CONTROLBAR等
  214. SKINPPWTL_API  void skinppSetSkinHwnd (HWND hWnd,LPCTSTR szClassName  =  NULL ) ;
  215.  
  216. //对指定的窗口临时去掉皮肤,可以通过SetSkinHwnd进行再次换肤
  217. SKINPPWTL_API  void skinppRemoveSkinHwnd (HWND hWnd ) ;
  218.  
  219. //是对SetNoSkinHwnd的进一步处理,可以解决使用SetNoSkinHwnd引起的Debug版的断言错
  220. #define SETNOSKINHWND(x) {\
  221.     HWND w=(x).UnsubclassWindow();\
  222.         skinppSetNoSkinHwnd(w);\
  223.         (x).SubclassWindow(w);\
  224. }
  225.  
  226. //是对RemoveSkinHwnd的进一步处理,可以解决使用RemoveSkinHwnd引起的Debug版的断言错
  227. #define REMOVESKINHWND(x){\
  228.     HWND w=(x).UnsubclassWindow();\
  229.         skinppRemoveSkinHwnd(w);\
  230.         (x).SubclassWindow(w);\
  231. }
  232.  
  233. SKINPPWTL_API HGDIOBJ skinppGetResFromID (PRESINFO pResInfo ) ;
  234.  
  235.  
  236. #endif //_SKINPPWTL_H_
  237.  
  238.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值