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

来源:互联网 发布:铁路行业预算软件 编辑:程序博客网 时间:2024/05/27 00:30


  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.  
原创粉丝点击