ButtonEx.h
上传用户:lds876
上传日期:2013-05-25
资源大小:567k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. #if !defined(AFX_BUTTONEX_H__53063543_3E40_4B91_A607_A78E280DDBA2__INCLUDED_)
  2. #define AFX_BUTTONEX_H__53063543_3E40_4B91_A607_A78E280DDBA2__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // ButtonEx.h : header file
  7. //
  8. /////////////////////////////////////////////////////////////////////////////
  9. // CButtonEx window
  10. class CButtonEx : public CButton
  11. {
  12. // Construction
  13. public:
  14. CButtonEx();
  15. // Attributes
  16. public:
  17. // Operations
  18. public:
  19. bool Create(HICON hIcon= 0, bool bIconOnly = false, CString strTipText = CString());
  20. // Overrides
  21. // ClassWizard generated virtual function overrides
  22. //{{AFX_VIRTUAL(CButtonEx)
  23. public:
  24. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  25. virtual BOOL PreTranslateMessage(MSG* pMsg);
  26. //}}AFX_VIRTUAL
  27. // Implementation
  28. public:
  29. virtual ~CButtonEx();
  30. // Generated message map functions
  31. protected:
  32. //{{AFX_MSG(CButtonEx)
  33. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  34. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  35. //}}AFX_MSG
  36. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  37. afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
  38. afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
  39. DECLARE_MESSAGE_MAP()
  40. private:
  41. void _DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  42. void RoundRectExK(CDC& dc, const CRect rc, const CPoint& pt, COLORREF itl, COLORREF ibr);
  43. void DrawTheIcon(CDC* pDC, CString* title, RECT* rcItem, BOOL IsPressed, BOOL IsDisabled);
  44. BOOL m_bOver;
  45. BOOL m_bTracking;
  46. BOOL m_bSelected;
  47. BOOL m_bFocus;
  48. long m_cxIcon;
  49. long m_cyIcon;
  50. HICON m_hIcon;
  51. bool m_bIconOnly;
  52. CToolTipCtrl m_tip;
  53. CString m_strTipText;
  54. BOOL m_bTiping;
  55. class CMemDC : public CDC
  56. {
  57. public:
  58. CDC*      m_dc;
  59. CBitmap      m_bitmap;
  60. CBitmap*  m_hOldBitmap;
  61. RECT         m_rc;
  62. CMemDC(HDC hDC, LPRECT pRect)
  63. {
  64. m_dc = new CDC;
  65. ASSERT(hDC != NULL);
  66. m_dc->m_hAttribDC = hDC;
  67. m_dc->m_hDC = hDC;
  68. if (pRect != NULL)
  69. m_rc = *pRect;
  70. else
  71. m_dc->GetClipBox(&m_rc);
  72. CreateCompatibleDC(m_dc);
  73. ::LPtoDP(m_dc->m_hDC, (LPPOINT)&m_rc, sizeof(RECT) / sizeof(POINT));
  74. m_bitmap.CreateCompatibleBitmap(m_dc, m_rc.right - m_rc.left, m_rc.bottom - m_rc.top);
  75. m_hOldBitmap = SelectObject(&m_bitmap);
  76. ::DPtoLP(m_dc->m_hDC, (LPPOINT)&m_rc, sizeof(RECT) / sizeof(POINT));
  77. SetWindowOrg(m_rc.left, m_rc.top);
  78. FillSolidRect(&m_rc, m_dc->GetBkColor());
  79. }
  80. ~CMemDC()
  81. {
  82. m_dc->BitBlt(m_rc.left, m_rc.top, m_rc.right - m_rc.left, m_rc.bottom - m_rc.top,
  83. this, m_rc.left, m_rc.top, SRCCOPY);
  84. SelectObject(m_hOldBitmap);
  85. delete m_dc;
  86. }
  87. };
  88. };
  89. /////////////////////////////////////////////////////////////////////////////
  90. //{{AFX_INSERT_LOCATION}}
  91. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  92. #endif // !defined(AFX_BUTTONEX_H__53063543_3E40_4B91_A607_A78E280DDBA2__INCLUDED_)