WinXPButtonST.cpp
上传用户:yangxun008
上传日期:2008-03-25
资源大小:3863k
文件大小:3k
源码类别:

按钮控件

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "WinXPButtonST.h"
  3. #ifdef _DEBUG
  4. #undef THIS_FILE
  5. static char THIS_FILE[]=__FILE__;
  6. #define new DEBUG_NEW
  7. #endif
  8. CWinXPButtonST::CWinXPButtonST()
  9. {
  10. // No rounded borders
  11. m_bIsRounded = FALSE;
  12. }
  13. CWinXPButtonST::~CWinXPButtonST()
  14. {
  15. }
  16. // This function is called every time the button border needs to be painted.
  17. // If the button is in standard (not flat) mode this function will NOT be called.
  18. // This is a virtual function that can be rewritten in CButtonST-derived classes
  19. // to produce a whole range of buttons not available by default.
  20. //
  21. // Parameters:
  22. // [IN] pDC
  23. // Pointer to a CDC object that indicates the device context.
  24. // [IN] pRect
  25. // Pointer to a CRect object that indicates the bounds of the
  26. // area to be painted.
  27. //
  28. // Return value:
  29. // BTNST_OK
  30. // Function executed successfully.
  31. //
  32. DWORD CWinXPButtonST::OnDrawBorder(CDC* pDC, LPCRECT pRect)
  33. {
  34. return BTNST_OK;
  35. } // End of OnDrawBorder
  36. // This function is called every time the button background needs to be painted.
  37. // If the button is in transparent mode this function will NOT be called.
  38. // This is a virtual function that can be rewritten in CButtonST-derived classes
  39. // to produce a whole range of buttons not available by default.
  40. //
  41. // Parameters:
  42. // [IN] pDC
  43. // Pointer to a CDC object that indicates the device context.
  44. // [IN] pRect
  45. // Pointer to a CRect object that indicates the bounds of the
  46. // area to be painted.
  47. //
  48. // Return value:
  49. // BTNST_OK
  50. // Function executed successfully.
  51. //
  52. DWORD CWinXPButtonST::OnDrawBackground(CDC* pDC, LPCRECT pRect)
  53. {
  54. if (!m_bMouseOnButton && !m_bIsPressed)
  55. return BASE_BUTTONST::OnDrawBackground(pDC, pRect);
  56. // Create and select a solid brush for button background
  57. CBrush brushBK(m_crColors[BTNST_COLOR_BK_IN]);
  58. CBrush* pOldBrush = pDC->SelectObject(&brushBK);
  59. // Create and select a thick black pen for button border
  60. CPen penBorder;
  61. penBorder.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
  62. CPen* pOldPen = pDC->SelectObject(&penBorder);
  63. if (m_bIsRounded)
  64. pDC->RoundRect(pRect, CPoint(8, 8));
  65. else
  66. pDC->Rectangle(pRect);
  67. // Put back the old objects
  68. pDC->SelectObject(pOldBrush);
  69. pDC->SelectObject(pOldPen);
  70. return BTNST_OK;
  71. } // End of OnDrawBackground
  72. // This function enables or disables the rounded border for the button.
  73. //
  74. // Parameters:
  75. // [IN] bRounded
  76. // If TRUE the button will have a round border.
  77. // [IN] bRepaint
  78. // If TRUE the button will be repainted.
  79. //
  80. // Return value:
  81. // BTNST_OK
  82. // Function executed successfully.
  83. //
  84. DWORD CWinXPButtonST::SetRounded(BOOL bRounded, BOOL bRepaint)
  85. {
  86. m_bIsRounded = bRounded;
  87. if (bRepaint) Invalidate();
  88. return BTNST_OK;
  89. } // End of SetRounded
  90. #undef BASE_BUTTONST