BtnST.h
上传用户:zslianheng
上传日期:2013-04-03
资源大小:946k
文件大小:7k
源码类别:

Linux/Unix编程

开发平台:

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: 17/October/2001
  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 1$ (ONE U.S. DOLLAR) TO THE AUTHOR:
  32. //
  33. // Davide Calabro'
  34. // P.O. Box 65
  35. // 21019 Somma Lombardo (VA)
  36. // Italy
  37. //
  38. #ifndef _BTNST_H
  39. #define _BTNST_H
  40. #if _MSC_VER >= 1000
  41. #pragma once
  42. #endif // _MSC_VER >= 1000
  43. // Return values
  44. #ifndef BTNST_OK
  45. #define BTNST_OK 0
  46. #endif
  47. #ifndef BTNST_INVALIDRESOURCE
  48. #define BTNST_INVALIDRESOURCE 1
  49. #endif
  50. #ifndef BTNST_FAILEDMASK
  51. #define BTNST_FAILEDMASK 2
  52. #endif
  53. #ifndef BTNST_INVALIDINDEX
  54. #define BTNST_INVALIDINDEX 3
  55. #endif
  56. #ifndef BTNST_INVALIDALIGN
  57. #define BTNST_INVALIDALIGN 4
  58. #endif
  59. class CButtonST : public CButton
  60. {
  61. public:
  62.     CButtonST();
  63. ~CButtonST();
  64.     enum { ST_ALIGN_HORIZ = 0, // Icon/bitmap on the left, text on the right
  65. ST_ALIGN_VERT, // Icon/bitmap on the top, text on the bottom
  66. ST_ALIGN_HORIZ_RIGHT // Icon/bitmap on the right, text on the left
  67. };
  68. enum { BTNST_COLOR_BK_IN = 0, // Background color when mouse is INside
  69. BTNST_COLOR_FG_IN, // Text color when mouse is INside
  70. BTNST_COLOR_BK_OUT, // Background color when mouse is OUTside
  71. BTNST_COLOR_FG_OUT, // Text color when mouse is OUTside
  72. BTNST_COLOR_BK_FOCUS, // Background color when the button is focused
  73. BTNST_COLOR_FG_FOCUS, // Text color when the button is focused
  74. BTNST_MAX_COLORS
  75. };
  76. // ClassWizard generated virtual function overrides
  77.     //{{AFX_VIRTUAL(CButtonST)
  78. public:
  79. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  80. virtual BOOL PreTranslateMessage(MSG* pMsg);
  81. protected:
  82. virtual void PreSubclassWindow();
  83. virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  84. //}}AFX_VIRTUAL
  85. public:
  86. DWORD SetDefaultColors(BOOL bRepaint = TRUE);
  87. DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE);
  88. DWORD GetColor(BYTE byColorIndex, COLORREF* crpColor);
  89. DWORD SetCheck(int nCheck, BOOL bRepaint = TRUE);
  90. int GetCheck();
  91. DWORD SetURL(LPCTSTR lpszURL = NULL);
  92. void DrawTransparent(BOOL bRepaint = FALSE);
  93. BOOL GetDefault();
  94. DWORD SetAlwaysTrack(BOOL bAlwaysTrack = TRUE);
  95. void SetTooltipText(int nText, BOOL bActivate = TRUE);
  96. void SetTooltipText(LPCTSTR lpszText, BOOL bActivate = TRUE);
  97. void ActivateTooltip(BOOL bEnable = TRUE);
  98. DWORD SetBtnCursor(int nCursorId = NULL, BOOL bRepaint = TRUE);
  99. DWORD SetFlat(BOOL bFlat = TRUE, BOOL bRepaint = TRUE);
  100. DWORD SetAlign(BYTE byAlign, BOOL bRepaint = TRUE);
  101. DWORD DrawBorder(BOOL bDrawBorder = TRUE, BOOL bRepaint = TRUE);
  102. DWORD DrawFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = TRUE);
  103. DWORD SetIcon(int nIconIn, int nIconOut = NULL);
  104. DWORD SetIcon(HICON hIconIn, HICON hIconOut = NULL);
  105. DWORD SetBitmaps(int nBitmapIn, COLORREF crTransColorIn, int nBitmapOut = NULL, COLORREF crTransColorOut = 0);
  106. DWORD SetBitmaps(HBITMAP hBitmapIn, COLORREF crTransColorIn, HBITMAP hBitmapOut = NULL, COLORREF crTransColorOut = 0);
  107. DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint = TRUE);
  108. static short GetVersionI() {return 34;}
  109. static LPCTSTR GetVersionC() {return (LPCTSTR)_T("3.4");}
  110. // @@
  111. void setText(UINT nID);
  112. protected:
  113.     //{{AFX_MSG(CButtonST)
  114. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  115. afx_msg void OnKillFocus(CWnd* pNewWnd);
  116. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  117. afx_msg void OnSysColorChange();
  118. afx_msg BOOL OnClicked();
  119. afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
  120. afx_msg void OnEnable(BOOL bEnable);
  121. afx_msg void OnCancelMode();
  122. afx_msg UINT OnGetDlgCode();
  123. //}}AFX_MSG
  124. afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
  125. virtual DWORD OnDrawBackground(CDC* pDC, LPCRECT pRect);
  126. virtual DWORD OnDrawBorder(CDC* pDC, LPCRECT pRect);
  127. BOOL m_bIsFlat; // Is a flat button?
  128. BOOL m_bMouseOnButton; // Is mouse over the button?
  129. BOOL m_bDrawTransparent; // Draw transparent?
  130. BOOL m_bIsPressed; // Is button pressed?
  131. BOOL m_bIsFocused; // Is button focused?
  132. BOOL m_bIsDisabled; // Is button disabled?
  133. BOOL m_bIsDefault; // Is default button?
  134. BOOL m_bIsCheckBox; // Is the button a checkbox?
  135. BYTE m_byAlign; // Align mode
  136. BOOL m_bDrawBorder; // Draw border?
  137. BOOL m_bDrawFlatFocus; // Draw focus rectangle for flat button?
  138. COLORREF m_crColors[BTNST_MAX_COLORS]; // Colors to be used
  139. HMENU m_hMenu; // Handle to associated menu
  140. HWND m_hParentWndMenu; // Handle to window for menu selection
  141. BOOL m_bMenuDisplayed; // Is menu displayed ?
  142. private:
  143. LRESULT OnSetStyle(WPARAM wParam, LPARAM lParam);
  144. LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
  145. void CancelHover();
  146. void FreeResources(BOOL bCheckForNULL = TRUE);
  147. void PrepareImageRect(BOOL bHasTitle, RECT* rpItem, CRect* rpTitle, BOOL bIsPressed, DWORD dwWidth, DWORD dwHeight, CRect* rpImage);
  148. HBITMAP CreateBitmapMask(HBITMAP hSourceBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTransColor);
  149. void DrawTheIcon(CDC* pDC, BOOL bHasTitle, RECT* rpItem, CRect* rpTitle, BOOL bIsPressed, BOOL bIsDisabled);
  150. void DrawTheBitmap(CDC* pDC, BOOL bHasTitle, RECT *rItem, CRect *rCaption, BOOL bIsPressed, BOOL bIsDisabled);
  151. void PaintBk(CDC* pDC);
  152. void InitToolTip();
  153. HCURSOR m_hCursor; // Handle to cursor
  154. CToolTipCtrl m_ToolTip; // Tooltip
  155. CDC m_dcBk;
  156. CBitmap m_bmpBk;
  157. CBitmap* m_pbmpOldBk;
  158. BOOL m_bAlwaysTrack; // Always hilight button?
  159. int m_nCheck; // Current value for checkbox
  160. UINT m_nTypeStyle; // Button style
  161. TCHAR m_szURL[_MAX_PATH]; // URL to open when clicked
  162. #pragma pack(1)
  163. typedef struct _STRUCT_ICONS
  164. {
  165. HICON hIcon; // Handle to icon
  166. DWORD dwWidth; // Width of icon
  167. DWORD dwHeight; // Height of icon
  168. } STRUCT_ICONS;
  169. #pragma pack()
  170. #pragma pack(1)
  171. typedef struct _STRUCT_BITMAPS
  172. {
  173. HBITMAP hBitmap; // Handle to bitmap
  174. DWORD dwWidth; // Width of bitmap
  175. DWORD dwHeight; // Height of bitmap
  176. HBITMAP hMask; // Handle to mask bitmap
  177. COLORREF crTransparent; // Transparent color
  178. } STRUCT_BITMAPS;
  179. #pragma pack()
  180. STRUCT_ICONS m_csIcons[2];
  181. STRUCT_BITMAPS m_csBitmaps[2];
  182. DECLARE_MESSAGE_MAP()
  183. };
  184. //{{AFX_INSERT_LOCATION}}
  185. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  186. #endif