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

金融证券系统

开发平台:

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 "guilabelbutton.h"
  15. #include "GuiDrawLayer.h"
  16. IMPLEMENT_DYNAMIC(CGuiLabelButton,CGuiToolButton)
  17. CGuiLabelButton::CGuiLabelButton(void)
  18. {
  19. m_cfont.CreateFont(14,0,0,0,FW_BOLD,0,0,0,0,1,2,1,34,"Arial");
  20. m_bDrawLine=FALSE;
  21. }
  22. CGuiLabelButton::~CGuiLabelButton(void)
  23. {
  24. }
  25. void CGuiLabelButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  26. {
  27. CDC*  pdc= CDC::FromHandle(lpDrawItemStruct->hDC);
  28. CRect rc=lpDrawItemStruct->rcItem;
  29. UINT  uState=lpDrawItemStruct->itemState;
  30. CFont* m_OldFont;
  31. CBrush cb;
  32. int calculodify;
  33. cb.CreateSolidBrush(m_clColor); //deberia ser blanco
  34. m_OldFont=pdc->SelectObject(&m_cfont);
  35. pdc->FillRect(rc,&cb);
  36. calculodify=rc.Height()-(m_SizeImage.cy);
  37. calculodify/=2;
  38. CPoint m_point=CPoint(2,calculodify+1);
  39. if (m_SizeImage.cx > 2)
  40. {
  41. pdc->DrawState (m_point, m_SizeImage,m_Icon,
  42. (uState==ODS_DISABLED?DSS_DISABLED:DSS_NORMAL),(CBrush*)NULL);
  43. }
  44. if (m_SizeText.cx > 2)
  45. {
  46. int nMode = pdc->SetBkMode(TRANSPARENT);
  47. CRect rectletra=rc;
  48. rectletra.left+=m_SizeImage.cx > 0 ? m_SizeImage.cx+8: 0;
  49. CPoint pt=CSize(rectletra.top,rectletra.left);
  50. if (uState & ODS_DISABLED)
  51. pdc->DrawState(pt, m_SizeText, m_szText, DSS_DISABLED, TRUE, 0, (CBrush*)NULL);
  52. else
  53. pdc->DrawText(m_szText,rectletra,DT_SINGLELINE|DT_LEFT|DT_VCENTER);
  54. pdc->SetBkMode(nMode);
  55. }
  56. pdc->SelectObject(m_OldFont);
  57. if (m_bDrawLine)
  58. {
  59. CPen p(PS_SOLID,1,GuiDrawLayer::GetRGBColorShadow());
  60. CPen* pOldPen=pdc->SelectObject(&p);
  61. pdc->MoveTo(rc.left,rc.bottom-2);
  62. pdc->LineTo(rc.right,rc.bottom-2);
  63. pdc->SelectObject(pOldPen);
  64. }
  65. // TODO:  Add your code to draw the specified item
  66. }