GuiNormalButton.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:3k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------//
  2. // This is a part of the GuiLib MFC Extention.  //
  3. // Autor  :  Francisco Campos  //
  4. // (C) 2002 Francisco Campos <www.beyondata.com> All rights reserved     //
  5. // This code is provided "as is", with absolutely no warranty expressed  //
  6. // or implied. Any use is at your own risk.  //
  7. // You must obtain the author's consent before you can include this code //
  8. // in a software library.  //
  9. // If the source code in  this file is used in any application  //
  10. // then acknowledgement must be made to the author of this program  //
  11. // fcampos@tutopia.com  //
  12. //-----------------------------------------------------------------------//
  13. #include "stdafx.h"
  14. #include "guinormalbutton.h"
  15. #include "GuiDrawLayer.h"
  16. CGuiNormalButton::CGuiNormalButton(void)
  17. {
  18. m_stlbtn=STL_NORMAL;
  19. m_clColor=GuiDrawLayer::GetRGBColorFace();
  20. }
  21. CGuiNormalButton::~CGuiNormalButton(void)
  22. {
  23. }
  24. void CGuiNormalButton::SetStyleButton(StyleBtn StlButton)
  25. {
  26. m_stlbtn=StlButton;
  27. }
  28. //STL_NORMAL=0,STL_FLAT=1,STL_SEMIFLAT=2,STL_XP=3
  29. void CGuiNormalButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  30. {
  31. CDC*  pdc= CDC::FromHandle(lpDrawItemStruct->hDC);
  32. CRect rc=lpDrawItemStruct->rcItem;
  33. UINT  uState=lpDrawItemStruct->itemState;
  34. CBrush cb;
  35. cb.CreateSolidBrush(m_clColor);
  36. COLORREF clrTL =GuiDrawLayer::GetRGBColorBTNHigh();
  37. COLORREF clrBR =GuiDrawLayer::GetRGBColorShadow();
  38. pdc->FillRect(rc,&cb);
  39. if( uState & ODS_SELECTED) //the button is pressed
  40. {
  41. switch(m_stlbtn)
  42. {
  43. case STL_FLAT:
  44. case STL_NORMAL:
  45. case STL_SEMIFLAT:
  46. pdc->Draw3dRect(rc,clrBR,clrTL);
  47. rc.DeflateRect(1,1);
  48. break;
  49. }
  50. }
  51. else if(m_bMouserOver)
  52. {
  53. switch(m_stlbtn)
  54. {
  55. case STL_FLAT:
  56. case STL_NORMAL:
  57. case STL_SEMIFLAT:
  58. pdc->Draw3dRect(rc,clrTL,clrBR);
  59. rc.DeflateRect(1,1);
  60. break;
  61. }
  62. }else
  63. {
  64. switch(m_stlbtn)
  65. {
  66. case STL_NORMAL:
  67. pdc->Draw3dRect(rc,clrTL,clrBR);
  68. rc.DeflateRect(1,1);
  69. break;
  70. case STL_SEMIFLAT:
  71. pdc->Draw3dRect(rc,clrTL,clrBR);
  72. rc.DeflateRect(1,1);
  73. break;
  74. case STL_FLAT:
  75. break;
  76. }
  77. }
  78. int calculodify;
  79. calculodify=rc.Height()-(m_SizeImage.cy);
  80. calculodify/=2;
  81. int nHeigh=calculodify+(m_bShowDark?1:0);
  82. int nWidth=rc.Width()/2 ;
  83. CPoint m_point=CPoint(nWidth,nHeigh);
  84. if (m_SizeImage.cx > 2)
  85. {
  86. if(m_bMouserOver == 1 && !(uState & ODS_DISABLED) && !(uState & ODS_SELECTED) && m_bShowDark)
  87. {
  88. CPoint p(m_point.x+1,m_point.y+1);
  89. pdc->DrawState(p,m_SizeImage,m_Icon,DSS_MONO,CBrush (GuiDrawLayer::GetRGBColorShadow()));
  90. m_point.x-=1; m_point.y-=1;
  91. }
  92. pdc->DrawState (m_point, m_SizeImage,m_Icon,
  93. (uState==ODS_DISABLED?DSS_DISABLED:DSS_NORMAL),(CBrush*)NULL);
  94. }
  95. if (m_SizeText.cx > 2)
  96. {
  97. int nMode = pdc->SetBkMode(TRANSPARENT);
  98. CRect rectletra=rc;
  99. rectletra.left+=m_SizeImage.cx;
  100. CPoint pt=CSize(rectletra.top,rectletra.left);
  101. if (uState & ODS_DISABLED)
  102. pdc->DrawState(pt, m_SizeText, m_szText, DSS_DISABLED, TRUE, 0, (CBrush*)NULL);
  103. else
  104. pdc->DrawText(m_szText,rectletra,DT_SINGLELINE|DT_LEFT|DT_VCENTER);
  105. pdc->SetBkMode(nMode);
  106. }
  107. }