BtnST.h
上传用户:dtengfei
上传日期:2013-01-16
资源大小:393k
文件大小:7k
源码类别:

医药行业

开发平台:

Visual C++

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