UniButton.h
上传用户:linpin
上传日期:2007-01-01
资源大小:46k
文件大小:5k
源码类别:

按钮控件

开发平台:

Visual C++

  1. #if !defined(AFX_UNIBUTTON_H__EBEB2EA0_A067_11D2_9E44_0020182F735A__INCLUDED_)
  2. #define AFX_UNIBUTTON_H__EBEB2EA0_A067_11D2_9E44_0020182F735A__INCLUDED_
  3. #if _MSC_VER >= 1000
  4. #pragma once
  5. #endif // _MSC_VER >= 1000
  6. /////////////////////////////////////////////////////////////////////////////
  7. // CUniButton window
  8. //
  9. // AUTHOR: Pavel A .Simakov
  10. // DATE: 981226
  11. // E-MAIL: psimakov@outplay.com
  12. // ORGANIZATION: Outplay Consulting
  13. // HTTP: www.outplay.com
  14. // TERM OF USE: unlimited, must cite AUTHOR
  15. // COPYRIHT: 1998 Outplay Consulting
  16. //
  17. /////////////////////////////////////////////////////////////////////////////
  18. class CUniButton : public CButton
  19. {
  20. public:
  21. // ClassWizard generated virtual function overrides
  22. //{{AFX_VIRTUAL(CUniButton)
  23. public:
  24. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  25. protected:
  26. virtual void PreSubclassWindow();
  27. virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  28. //}}AFX_VIRTUAL
  29. protected:
  30. //{{AFX_MSG(CUniButton)
  31. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  32. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  33. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  34. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  35. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  36. //}}AFX_MSG
  37. DECLARE_MESSAGE_MAP()
  38. private:
  39. UINT m_nBorder; // width of the border in pixels for 3D highlight
  40. LONG m_lfEscapement; // orientation of the caption (in tenth of the degree as in LOGFONT)
  41. COLORREF m_nColor, m_sColor, m_hColor, m_dColor; // background colors for button states: normal, selected, hover, disabled
  42. CBitmap * m_pNormal; // bitmaps to hold button images
  43. CBitmap * m_pSelected;
  44. CBitmap * m_pHover;
  45. CBitmap * m_pDisabled;
  46. CPoint m_CenterPoint; // button caption will be centered around this point
  47. BOOL m_bMouseDown; // indicated that mouse is pressed down
  48. BOOL m_bHover; // indicates if mouse is over the button
  49. BOOL m_bCapture; // indicates that mouse is captured in the buton
  50. HRGN m_hRgn; // region in screen coordinates
  51. BOOL m_bNeedBitmaps; // flag idicates that state bitmaps must be rebuild
  52. void DrawButton(CDC * pDC, CRect * pRect, UINT state); // draws button to the screen
  53. void PrepareStateBitmaps(CDC * pDC, CRect * pRect); // prepares bitmaps for button states
  54. BOOL HitTest(CPoint point); // determines if point is inside the button region
  55. void RgnPixelWork(CDC * pDC, CRgn * pRgn); // region pixel work - unused
  56. void FrameRgn3D(HDC hDC, const HRGN hRgn, BOOL bSunken); // frames region to show 3D shadows
  57. void CheckHover(CPoint point);
  58. protected:
  59. void PrepareNormalState(CDC * pDC, CDC * pMemDC, CRect * pRect); // prepare normal state button bitmap
  60. void PrepareSelectedState(CDC * pDC, CDC * pMemDC, CRect * pRect); // prepare selectedstate button bitmap
  61. void PrepareHoverState(CDC * pDC, CDC * pMemDC, CRect * pRect); // prepare hover state button bitmap
  62. void PrepareDisabledState(CDC * pDC, CDC * pMemDC, CRect * pRect); // prepare disabled state button bitmap
  63. void DrawButtonCaption(HDC hDC, CRect * pRect, BOOL bEnabled, BOOL bSunken); // draws button caption 
  64. void PaintRgn(CDC * pDC, CDC * pMemDC, CBitmap * pBitmap, COLORREF color, CRect * pRect, BOOL bEnabled, BOOL bSunken); // paint button 
  65. public:
  66. CUniButton(); // constructor
  67. virtual ~CUniButton(); // destructor
  68. BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle, const CPoint point, const HRGN hRgn, CWnd* pParentWnd, UINT nID);
  69. // constructor with default colors and border
  70. BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle, const CPoint point, const HRGN hRgn, CWnd* pParentWnd, UINT nID, COLORREF color);
  71. // constructor with hover & selected color specified
  72. BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle, const CPoint point, const HRGN hRgn, CWnd* pParentWnd, UINT nID, UINT nBorder, COLORREF nColor, COLORREF sColor, COLORREF hColor, COLORREF dColor);
  73. // complex parameters constructor
  74. // lpszCaption - window caption
  75. // dwStyle - window styles
  76. // point - position of the button on the parent window (in parent coordinates)
  77. // hRgn - handle to region which represents the button (in button client coordinates)
  78. // pParentWnd - handle to parent window
  79. // nID - control Id
  80. // nBorder - specifies width of the border in pixels for 3D highlight (allowed values are 1, 2)
  81. // nColor - normal color 
  82. // sColor - selected color
  83. // hColor - hover color
  84. // dColor - disabled color
  85. BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle, const CPoint point, const HRGN hRgn, CWnd* pParentWnd, UINT nID, UINT nBorder, LONG lfEscapement, COLORREF nColor, COLORREF sColor, COLORREF hColor, COLORREF dColor);
  86. // variation of above
  87. };
  88. /////////////////////////////////////////////////////////////////////////////
  89. //{{AFX_INSERT_LOCATION}}
  90. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  91. #endif // !defined(AFX_UNIBUTTON_H__EBEB2EA0_A067_11D2_9E44_0020182F735A__INCLUDED_)