BtnST.h
上传用户:guanx8y8
上传日期:2007-07-30
资源大小:326k
文件大小:6k
开发平台:

Visual C++

  1. #ifndef _BTNST_H
  2. #define _BTNST_H
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. // CBtnST.h : header file
  7. //
  8. // Comment this if you don't want that CButtonST hilights itself
  9. // also when the window is inactive (like happens in Internet Explorer)
  10. #define ST_LIKEIE
  11. // Comment this if you don't want to use CMemDC class
  12. #define ST_USE_MEMDC
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CButtonST window
  15. class CButtonST : public CButton //为了实现平面按钮
  16. {
  17. // Construction
  18. public:
  19.     CButtonST();
  20. ~CButtonST();
  21.     enum { ST_ALIGN_HORIZ, ST_ALIGN_VERT };
  22. // Attributes
  23. public:
  24. // Operations
  25. public:
  26. // Overrides
  27. // ClassWizard generated virtual function overrides
  28.     //{{AFX_VIRTUAL(CButtonST)
  29. public:
  30. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  31. virtual BOOL PreTranslateMessage(MSG* pMsg);
  32. protected:
  33. virtual void PreSubclassWindow();
  34. //}}AFX_VIRTUAL
  35. // Implementation
  36. public:
  37. void AddToolTip ( CString strTip );
  38. BOOL SetBtnCursor(int nCursorId = -1);
  39. void SetFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = FALSE);
  40. BOOL GetFlatFocus();
  41. void SetDefaultActiveFgColor(BOOL bRepaint = FALSE);
  42. void SetActiveFgColor(COLORREF crNew, BOOL bRepaint = FALSE);
  43. const COLORREF GetActiveFgColor();
  44. void SetDefaultActiveBgColor(BOOL bRepaint = FALSE);
  45. void SetActiveBgColor(COLORREF crNew, BOOL bRepaint = FALSE);
  46. const COLORREF GetActiveBgColor();
  47. void SetDefaultInactiveFgColor(BOOL bRepaint = FALSE);
  48. void SetInactiveFgColor(COLORREF crNew, BOOL bRepaint = FALSE);
  49. const COLORREF GetInactiveFgColor();
  50. void SetDefaultInactiveBgColor(BOOL bRepaint = FALSE);
  51. void SetInactiveBgColor(COLORREF crNew, BOOL bRepaint = FALSE);
  52. const COLORREF GetInactiveBgColor();
  53. void SetShowText(BOOL bShow = TRUE);
  54. BOOL GetShowText();
  55. void SetAlign(int nAlign);
  56. int GetAlign();
  57. void SetFlat(BOOL bState = TRUE);
  58. BOOL GetFlat();
  59. void DrawBorder(BOOL bEnable = TRUE);
  60. void SetIcon(int nIconInId, int nIconOutId = NULL, BYTE cx = 32, BYTE cy = 32);
  61. static const short GetVersionI();
  62. static const char* GetVersionC();
  63. protected:
  64. CString m_strToolTip;
  65. CToolTipCtrl m_ctrlToolTip;
  66.     //{{AFX_MSG(CButtonST)
  67. afx_msg void OnCaptureChanged(CWnd *pWnd);
  68. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  69. afx_msg void OnKillFocus(CWnd* pNewWnd);
  70. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  71. //}}AFX_MSG
  72. DECLARE_MESSAGE_MAP()
  73. private:
  74. void DrawTheIcon(CDC* pDC, CString* title, RECT* rcItem, CRect* captionRect, BOOL IsPressed, BOOL IsDisabled);
  75. int m_nAlign;
  76. BOOL m_bShowText;
  77. BOOL m_bDrawBorder;
  78. BOOL m_bIsFlat;
  79. BOOL m_MouseOnButton;
  80. BOOL m_bDrawFlatFocus;
  81. HCURSOR m_hCursor;
  82. HICON m_hIconIn;
  83. HICON m_hIconOut;
  84. BYTE m_cyIcon;
  85. BYTE m_cxIcon;
  86. COLORREF  m_crInactiveBg;
  87.     COLORREF  m_crInactiveFg;
  88.     COLORREF  m_crActiveBg;
  89.     COLORREF  m_crActiveFg;
  90. };
  91. /*
  92. #ifdef ST_USE_MEMDC
  93. //////////////////////////////////////////////////
  94. // CMemDC - memory DC
  95. //
  96. // Author: Keith Rule
  97. // Email:  keithr@europa.com
  98. // Copyright 1996-1997, Keith Rule
  99. //
  100. // You may freely use or modify this code provided this
  101. // Copyright is included in all derived versions.
  102. //
  103. // History - 10/3/97 Fixed scrolling bug.
  104. //                   Added print support.
  105. //           25 feb 98 - fixed minor assertion bug
  106. //
  107. // This class implements a memory Device Context
  108. class CMemDC : public CDC
  109. {
  110. public:
  111.     // constructor sets up the memory DC
  112.     CMemDC(CDC* pDC) : CDC()
  113.     {
  114.         ASSERT(pDC != NULL);
  115.         m_pDC = pDC;
  116.         m_pOldBitmap = NULL;
  117.         m_bMemDC = !pDC->IsPrinting();
  118.               
  119.         if (m_bMemDC)    // Create a Memory DC
  120.         {
  121.             pDC->GetClipBox(&m_rect);
  122.             CreateCompatibleDC(pDC);
  123.             m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
  124.             m_pOldBitmap = SelectObject(&m_bitmap);
  125.             SetWindowOrg(m_rect.left, m_rect.top);
  126.         }
  127.         else        // Make a copy of the relevent parts of the current DC for printing
  128.         {
  129.             m_bPrinting = pDC->m_bPrinting;
  130.             m_hDC       = pDC->m_hDC;
  131.             m_hAttribDC = pDC->m_hAttribDC;
  132.         }
  133.     }
  134.     
  135.     // Destructor copies the contents of the mem DC to the original DC
  136.     ~CMemDC()
  137.     {
  138.         if (m_bMemDC) 
  139.         {    
  140.             // Copy the offscreen bitmap onto the screen.
  141.             m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(),
  142.                           this, m_rect.left, m_rect.top, SRCCOPY);
  143.             //Swap back the original bitmap.
  144.             SelectObject(m_pOldBitmap);
  145.         } else {
  146.             // All we need to do is replace the DC with an illegal value,
  147.             // this keeps us from accidently deleting the handles associated with
  148.             // the CDC that was passed to the constructor.
  149.             m_hDC = m_hAttribDC = NULL;
  150.         }
  151.     }
  152.     // Allow usage as a pointer
  153.     CMemDC* operator->() {return this;}
  154.         
  155.     // Allow usage as a pointer
  156.     operator CMemDC*() {return this;}
  157. private:
  158.     CBitmap  m_bitmap;      // Offscreen bitmap
  159.     CBitmap* m_pOldBitmap;  // bitmap originally found in CMemDC
  160.     CDC*     m_pDC;         // Saves CDC passed in constructor
  161.     CRect    m_rect;        // Rectangle of drawing area.
  162.     BOOL     m_bMemDC;      // TRUE if CDC really is a Memory DC.
  163. };
  164. #endif
  165. */
  166. /////////////////////////////////////////////////////////////////////////////
  167. //{{AFX_INSERT_LOCATION}}
  168. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  169. #endif