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

金融证券系统

开发平台:

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 "guivisiofolder.h"
  15. #include "guiDrawLayer.h"
  16. #include "..headerguivisiofolder.h"
  17. IMPLEMENT_DYNAMIC(CGuiVisioFolder, CGuiFolder)
  18. void  CGuiVisioFolder::SetImageList(UINT nBitmapID, int cx, int nGrow, COLORREF crMask)
  19. {
  20. CBitmap cbmp;
  21. BITMAP bmp;
  22. m_Img.Create(nBitmapID,cx,nGrow,crMask);
  23. cbmp.LoadBitmap(nBitmapID);
  24. cbmp.GetBitmap(&bmp);
  25. m_Img.Add(&cbmp,crMask);
  26. }
  27. void CGuiVisioFolder::DrawFolder(CFolderBar* cfb,Style m_Style)
  28. {
  29. CRect rc=cfb->m_rect;
  30. CRect rcWin=cfb->m_rect;
  31. int nNuImage=cfb->m_img;
  32. CBrush cb;
  33. CClientDC pDC(this);
  34. cb.CreateSysColorBrush(COLOR_BTNFACE);
  35. rc.top+=1;
  36. pDC.FillRect(&rc,&cb);
  37. //se pintan  bordes que simulen un boton
  38. if (m_Style == mNormal)  //el folder no tiene el mouse 
  39. {
  40. pDC.Draw3dRect(rc, GuiDrawLayer::GetRGBColorBTNHigh(),GuiDrawLayer::GetRGBColorShadow());
  41. rc.DeflateRect(1,1);
  42. pDC.Draw3dRect(rc, GuiDrawLayer::GetRGBColorFace(),GuiDrawLayer::GetRGBColorShadow());
  43. }
  44. else if (m_Style == mFlat) //el mouse esta sobre el folder pero no presiona
  45. pDC.Draw3dRect(rc, GuiDrawLayer::GetRGBColorBTNHigh(),GuiDrawLayer::GetRGBColorShadow());
  46. else if (m_Style == mPush) //el mouse esta sobre el folder y presiona
  47. pDC.Draw3dRect(rc, GuiDrawLayer::GetRGBColorShadow(),GuiDrawLayer::GetRGBColorBTNHigh());
  48. int OldMode=pDC.SetBkMode(TRANSPARENT);
  49. cfont = pDC.SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));
  50. CString m_cadBreak=cfb->m_lpMsg;
  51. int cont=m_cadBreak.GetLength();
  52. CSize coor=pDC.GetTextExtent(m_cadBreak,m_cadBreak.GetLength());
  53. CSize szImage=CSize(0,0);
  54. //se dibuja la imagen
  55. if(nNuImage != -1) 
  56. {
  57. IMAGEINFO pImageInfo;
  58. m_Img.GetImageInfo(nNuImage,&pImageInfo);
  59. CRect rcima =pImageInfo.rcImage;
  60. szImage=CSize(rcima.Width(),rcima.Height());
  61. CPoint pti=CPoint(rc.left+2,rc.top+3);
  62. m_Img.Draw(&pDC, nNuImage, pti, ILD_TRANSPARENT);
  63. }
  64. //guardar espacio para la imagen
  65. rc.left+=szImage.cx+4;
  66. rc.right-=8;
  67. if ( coor.cx > rc.Width())
  68. {
  69. rc.left+=1;
  70. while(cont > 1 )
  71. {
  72. CString m_scadtemp=m_cadBreak+"...";
  73. CSize coor=pDC.GetTextExtent(m_scadtemp,m_scadtemp.GetLength());
  74. if(coor.cx > rc.Width())
  75. m_cadBreak=m_cadBreak.Left(m_cadBreak.GetLength()-1);
  76. else
  77. break;
  78. cont--;
  79. }
  80. m_cadBreak+=_T("...");
  81. rc.right+=3;
  82. pDC.DrawText(m_cadBreak,rc,DT_SINGLELINE|DT_LEFT|DT_VCENTER);
  83. }
  84. else
  85. pDC.DrawText(cfb->m_lpMsg,rc,DT_WORDBREAK|DT_SINGLELINE|DT_CENTER|DT_VCENTER);
  86. //----se dibuja el gripper----------
  87. rcWin.top+=5;
  88. rcWin.right-=4;
  89. rcWin.left=rcWin.right-3;
  90. rcWin.bottom-=4;
  91. for (int i=0; i < rcWin.Height(); i+=2)
  92. {
  93. CRect rcWindow;
  94. CBrush cb;
  95. cb.CreateSolidBrush(::GetSysColor(COLOR_BTNSHADOW));
  96. rcWindow=rcWin;
  97. rcWindow.top=rcWin.top+i;
  98. rcWindow.bottom=rcWindow.top+1;
  99. pDC.FillRect(rcWindow,&cb);
  100. }
  101. //-------------------------
  102.     pDC.SetBkColor(OldMode);
  103. // Modified By SunZhenyu
  104. pDC.SelectObject(cfont);
  105. }
  106. CGuiVisioFolder::CGuiVisioFolder(void)
  107. {
  108. }
  109. CGuiVisioFolder::~CGuiVisioFolder(void)
  110. {
  111. }
  112. BEGIN_MESSAGE_MAP(CGuiVisioFolder, CGuiFolder)
  113. ON_WM_MOUSEMOVE()
  114. ON_WM_LBUTTONDOWN()
  115. END_MESSAGE_MAP()
  116. void CGuiVisioFolder::OnMouseMove(UINT nFlags, CPoint point)
  117. {
  118. // TODO: Add your message handler code here and/or call default
  119. CGuiFolder::OnMouseMove(nFlags, point);
  120. ::SetCursor(::LoadCursor(NULL,MAKEINTRESOURCE(32649)));//IDC_HAND));
  121. }
  122. void CGuiVisioFolder::OnLButtonDown(UINT nHitTest, CPoint point)
  123. {
  124. // TODO: Add your message handler code here and/or call default
  125. ::SetCursor(::LoadCursor(NULL,MAKEINTRESOURCE(32649)));
  126. CGuiFolder::OnLButtonDown(nHitTest, point);
  127. }