BTNST.H
上传用户:gt3658
上传日期:2022-07-09
资源大小:97k
文件大小:10k
源码类别:

棋牌游戏

开发平台:

Visual C++

  1. //
  2. // Class: CButtonST
  3. //
  4. // Compiler: Visual C++
  5. // Tested on: Visual C++ 5.0
  6. // Visual C++ 6.0
  7. //
  8. // Version: See GetVersionC() or GetVersionI()
  9. //
  10. // Created: xx/xxxx/1998
  11. // Updated: 25/November/2002
  12. //
  13. // Author: Davide Calabro' davide_calabro@yahoo.com
  14. // http://www.softechsoftware.it
  15. //
  16. // Note: Code for the PreSubclassWindow and OnSetStyle functions
  17. // has been taken from the COddButton class
  18. // published by Paolo Messina and Jerzy Kaczorowski
  19. //
  20. // Disclaimer
  21. // ----------
  22. // THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT
  23. // ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE
  24. // DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE
  25. // RISK OF USING THIS SOFTWARE.
  26. //
  27. // Terms of use
  28. // ------------
  29. // THIS SOFTWARE IS FREE FOR PERSONAL USE OR FREEWARE APPLICATIONS.
  30. // IF YOU USE THIS SOFTWARE IN COMMERCIAL OR SHAREWARE APPLICATIONS YOU
  31. // ARE GENTLY ASKED TO DONATE 5$ (FIVE U.S. DOLLARS) TO THE AUTHOR:
  32. //
  33. // Davide Calabro'
  34. // P.O. Box 65
  35. // 21019 Somma Lombardo (VA)
  36. // Italy
  37. //
  38. //   Modified by jingzhou xu, Add background color support
  39. //
  40. #ifndef _BTNST_H
  41. #define _BTNST_H
  42. // Uncomment the following line to enable support for sound effects
  43. #define BTNST_USE_SOUND
  44. #if _MSC_VER >= 1000
  45. #pragma once
  46. #endif // _MSC_VER >= 1000
  47. // Return values
  48. #ifndef BTNST_OK
  49. #define BTNST_OK 0
  50. #endif
  51. #ifndef BTNST_INVALIDRESOURCE
  52. #define BTNST_INVALIDRESOURCE 1
  53. #endif
  54. #ifndef BTNST_FAILEDMASK
  55. #define BTNST_FAILEDMASK 2
  56. #endif
  57. #ifndef BTNST_INVALIDINDEX
  58. #define BTNST_INVALIDINDEX 3
  59. #endif
  60. #ifndef BTNST_INVALIDALIGN
  61. #define BTNST_INVALIDALIGN 4
  62. #endif
  63. #ifndef BTNST_BADPARAM
  64. #define BTNST_BADPARAM 5
  65. #endif
  66. #ifndef BTNST_INVALIDPRESSEDSTYLE
  67. #define BTNST_INVALIDPRESSEDSTYLE 6
  68. #endif
  69. // Dummy identifier for grayscale icon
  70. #ifndef BTNST_AUTO_GRAY
  71. #define BTNST_AUTO_GRAY (HICON)(0xffffffff - 1L)
  72. #endif
  73. class CButtonST : public CButton
  74. {
  75. public:
  76.     CButtonST();
  77. ~CButtonST();
  78.     enum { ST_ALIGN_HORIZ = 0, // Icon/bitmap on the left, text on the right
  79. ST_ALIGN_VERT, // Icon/bitmap on the top, text on the bottom
  80. ST_ALIGN_HORIZ_RIGHT, // Icon/bitmap on the right, text on the left
  81. ST_ALIGN_OVERLAP // Icon/bitmap on the same space as text
  82. };
  83. enum { BTNST_COLOR_BK_IN = 0, // Background color when mouse is INside
  84. BTNST_COLOR_FG_IN, // Text color when mouse is INside
  85. BTNST_COLOR_BK_OUT, // Background color when mouse is OUTside
  86. BTNST_COLOR_FG_OUT, // Text color when mouse is OUTside
  87. BTNST_COLOR_BK_FOCUS, // Background color when the button is focused
  88. BTNST_COLOR_FG_FOCUS, // Text color when the button is focused
  89. BTNST_MAX_COLORS
  90. };
  91.     enum { BTNST_PRESSED_LEFTRIGHT = 0, // Pressed style from left to right (as usual)
  92. BTNST_PRESSED_TOPBOTTOM // Pressed style from top to bottom
  93. };
  94. // ClassWizard generated virtual function overrides
  95.     //{{AFX_VIRTUAL(CButtonST)
  96. public:
  97. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  98. virtual BOOL PreTranslateMessage(MSG* pMsg);
  99. protected:
  100. virtual void PreSubclassWindow();
  101. //}}AFX_VIRTUAL
  102. public:
  103. DWORD SetDefaultColors(BOOL bRepaint = TRUE);
  104. DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE);
  105. DWORD GetColor(BYTE byColorIndex, COLORREF* crpColor);
  106. DWORD OffsetColor(BYTE byColorIndex, short shOffset, BOOL bRepaint = TRUE);
  107. // Background color support, jingzhou xu
  108. void SetBkColor(COLORREF clrBk);        
  109. COLORREF GetBkColor();
  110. DWORD SetCheck(int nCheck, BOOL bRepaint = TRUE);
  111. int GetCheck();
  112. DWORD SetURL(LPCTSTR lpszURL = NULL);
  113. void DrawTransparent(BOOL bRepaint = FALSE);
  114. DWORD SetBk(CDC* pDC);
  115. BOOL GetDefault();
  116. DWORD SetAlwaysTrack(BOOL bAlwaysTrack = TRUE);
  117. void SetTooltipText(int nText, BOOL bActivate = TRUE);
  118. void SetTooltipText(LPCTSTR lpszText, BOOL bActivate = TRUE);
  119. void ActivateTooltip(BOOL bEnable = TRUE);
  120. DWORD EnableBalloonTooltip();
  121. DWORD SetBtnCursor(int nCursorId = NULL, BOOL bRepaint = TRUE);
  122. DWORD SetFlat(BOOL bFlat = TRUE, BOOL bRepaint = TRUE);
  123. DWORD SetAlign(BYTE byAlign, BOOL bRepaint = TRUE);
  124. DWORD SetPressedStyle(BYTE byStyle, BOOL bRepaint = TRUE);
  125. DWORD DrawBorder(BOOL bDrawBorder = TRUE, BOOL bRepaint = TRUE);
  126. DWORD DrawFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = TRUE);
  127. DWORD SetIcon(int nIconIn, int nIconOut = NULL);
  128. DWORD SetIcon(HICON hIconIn, HICON hIconOut = NULL);
  129. DWORD SetBitmaps(int nBitmapIn, COLORREF crTransColorIn, int nBitmapOut = NULL, COLORREF crTransColorOut = 0);
  130. DWORD SetBitmaps(HBITMAP hBitmapIn, COLORREF crTransColorIn, HBITMAP hBitmapOut = NULL, COLORREF crTransColorOut = 0);
  131. void SizeToContent();
  132. #ifdef BTNST_USE_BCMENU
  133. DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle = TRUE, UINT nToolbarID = NULL, CSize sizeToolbarIcon = CSize(16, 16), COLORREF crToolbarBk = RGB(255, 0, 255), BOOL bRepaint = TRUE);
  134. #else
  135. DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint = TRUE);
  136. #endif
  137. DWORD SetMenuCallback(HWND hWnd, UINT nMessage, LPARAM lParam = 0);
  138. #ifdef BTNST_USE_SOUND
  139. DWORD SetSound(LPCTSTR lpszSound, HMODULE hMod = NULL, BOOL bPlayOnClick = FALSE, BOOL bPlayAsync = TRUE);
  140. #endif
  141. static short GetVersionI() {return 38;}
  142. static LPCTSTR GetVersionC() {return (LPCTSTR)_T("3.8");}
  143. BOOL m_bShowDisabledBitmap;
  144. POINT m_ptImageOrg;
  145. POINT m_ptPressedOffset;
  146. protected:
  147.     //{{AFX_MSG(CButtonST)
  148. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  149. afx_msg void OnKillFocus(CWnd* pNewWnd);
  150. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  151. afx_msg void OnSysColorChange();
  152. afx_msg BOOL OnClicked();
  153. afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
  154. afx_msg void OnEnable(BOOL bEnable);
  155. afx_msg void OnCancelMode();
  156. afx_msg UINT OnGetDlgCode();
  157. //}}AFX_MSG
  158. #ifdef BTNST_USE_BCMENU
  159. afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
  160. afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
  161. #endif
  162. afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
  163. HICON CreateGrayscaleIcon(HICON hIcon);
  164. virtual DWORD OnDrawBackground(CDC* pDC, CRect* pRect);
  165. virtual DWORD OnDrawBorder(CDC* pDC, CRect* pRect);
  166. COLORREF    m_clrBkColor;       // Background color, jingzhou xu
  167. BOOL m_bIsFlat; // Is a flat button?
  168. BOOL m_bMouseOnButton; // Is mouse over the button?
  169. BOOL m_bDrawTransparent; // Draw transparent?
  170. BOOL m_bIsPressed; // Is button pressed?
  171. BOOL m_bIsFocused; // Is button focused?
  172. BOOL m_bIsDisabled; // Is button disabled?
  173. BOOL m_bIsDefault; // Is default button?
  174. BOOL m_bIsCheckBox; // Is the button a checkbox?
  175. BYTE m_byAlign; // Align mode
  176. BOOL m_bDrawBorder; // Draw border?
  177. BOOL m_bDrawFlatFocus; // Draw focus rectangle for flat button?
  178. COLORREF m_crColors[BTNST_MAX_COLORS]; // Colors to be used
  179. HWND m_hParentWndMenu; // Handle to window for menu selection
  180. BOOL m_bMenuDisplayed; // Is menu displayed ?
  181. #ifdef BTNST_USE_BCMENU
  182. BCMenu m_menuPopup; // BCMenu class instance
  183. #else
  184. HMENU m_hMenu; // Handle to associated menu
  185. #endif
  186. private:
  187. LRESULT OnSetCheck(WPARAM wParam, LPARAM lParam);
  188. LRESULT OnGetCheck(WPARAM wParam, LPARAM lParam);
  189. LRESULT OnSetStyle(WPARAM wParam, LPARAM lParam);
  190. LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
  191. void CancelHover();
  192. void FreeResources(BOOL bCheckForNULL = TRUE);
  193. void PrepareImageRect(BOOL bHasTitle, RECT* rpItem, CRect* rpTitle, BOOL bIsPressed, DWORD dwWidth, DWORD dwHeight, CRect* rpImage);
  194. HBITMAP CreateBitmapMask(HBITMAP hSourceBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTransColor);
  195. virtual void DrawTheIcon(CDC* pDC, BOOL bHasTitle, RECT* rpItem, CRect* rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
  196. virtual void DrawTheBitmap(CDC* pDC, BOOL bHasTitle, RECT* rpItem, CRect* rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
  197. virtual void DrawTheText(CDC* pDC, LPCTSTR lpszText, RECT* rpItem, CRect* rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
  198. void PaintBk(CDC* pDC);
  199. void InitToolTip();
  200. HCURSOR m_hCursor; // Handle to cursor
  201. CToolTipCtrl m_ToolTip; // Tooltip
  202. CDC m_dcBk;
  203. CBitmap m_bmpBk;
  204. CBitmap* m_pbmpOldBk;
  205. BOOL m_bAlwaysTrack; // Always hilight button?
  206. int m_nCheck; // Current value for checkbox
  207. UINT m_nTypeStyle; // Button style
  208. DWORD m_dwToolTipStyle; // Style of tooltip control
  209. TCHAR m_szURL[_MAX_PATH]; // URL to open when clicked
  210. #pragma pack(1)
  211. typedef struct _STRUCT_ICONS
  212. {
  213. HICON hIcon; // Handle to icon
  214. DWORD dwWidth; // Width of icon
  215. DWORD dwHeight; // Height of icon
  216. } STRUCT_ICONS;
  217. #pragma pack()
  218. #pragma pack(1)
  219. typedef struct _STRUCT_BITMAPS
  220. {
  221. HBITMAP hBitmap; // Handle to bitmap
  222. DWORD dwWidth; // Width of bitmap
  223. DWORD dwHeight; // Height of bitmap
  224. HBITMAP hMask; // Handle to mask bitmap
  225. COLORREF crTransparent; // Transparent color
  226. } STRUCT_BITMAPS;
  227. #pragma pack()
  228. #pragma pack(1)
  229. typedef struct _STRUCT_CALLBACK
  230. {
  231. HWND hWnd; // Handle to window
  232. UINT nMessage; // Message identifier
  233. WPARAM wParam;
  234. LPARAM lParam;
  235. } STRUCT_CALLBACK;
  236. #pragma pack()
  237. STRUCT_ICONS m_csIcons[2];
  238. STRUCT_BITMAPS m_csBitmaps[2];
  239. STRUCT_CALLBACK m_csCallbacks;
  240. #ifdef BTNST_USE_SOUND
  241. #pragma pack(1)
  242. typedef struct _STRUCT_SOUND
  243. {
  244. TCHAR szSound[_MAX_PATH];
  245. LPCTSTR lpszSound;
  246. HMODULE hMod;
  247. DWORD dwFlags;
  248. } STRUCT_SOUND;
  249. #pragma pack()
  250. STRUCT_SOUND m_csSounds[2]; // Index 0 = Over 1 = Clicked
  251. #endif
  252. DECLARE_MESSAGE_MAP()
  253. };
  254. //{{AFX_INSERT_LOCATION}}
  255. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  256. #endif