CustomBar.cpp
上传用户:latoyin
上传日期:2017-10-19
资源大小:2882k
文件大小:3k
源码类别:

数据库系统

开发平台:

Visual C++

  1. // CustomBar.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Equipment.h"
  5. #include "CustomBar.h"
  6. #include "EquipmentDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CCustomBar
  14. extern CEquipmentApp theApp;
  15. //extern CEquipmentDlg dlg;
  16. CCustomBar::~CCustomBar()
  17. {
  18. delete (imagelist);
  19. }
  20. BEGIN_MESSAGE_MAP(CCustomBar, CToolBarCtrl)
  21. //{{AFX_MSG_MAP(CCustomBar)
  22. ON_WM_MOUSEMOVE()
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CCustomBar message handlers
  27. CCustomBar::CCustomBar()
  28. {
  29. imagelist = new CImageList();
  30. }
  31. BOOL CCustomBar::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) 
  32. {
  33. CToolBarCtrl::Create(dwStyle,rect,pParentWnd,nID);//调用父类的Create方法
  34. m_ButtonCount =IDS_QUIT-IDS_EQUIPKIND+1; //设计按钮数量
  35. TBBUTTON* m_pButtons;
  36. SetBitmapSize(CSize(32,32));//设置按钮位图大小
  37. imagelist->Create(32,32,ILC_COLOR32|ILC_MASK,0,0);
  38. for (int n =0;n<13;n++)
  39. {
  40. imagelist->Add(theApp.LoadIcon(n+IDI_TOOLBAR1));
  41. }
  42. SetImageList(imagelist);
  43. m_pButtons = new TBBUTTON[m_ButtonCount];
  44. for (int i = 0; i<m_ButtonCount; i++)
  45. {
  46. CString string;
  47. string.LoadString(i+IDS_EQUIPKIND);
  48. int stringlength = string.GetLength()+1;
  49. TCHAR * char1 = string.GetBufferSetLength(stringlength);
  50. char1[stringlength]=0;
  51. char1[stringlength-1]=0;
  52. VERIFY((m_pButtons[i].iString =AddStrings(char1))!=-1);
  53. m_pButtons[i].fsState = TBSTATE_ENABLED;
  54. m_pButtons[i].dwData = 0;
  55. m_pButtons[i].fsStyle = TBSTYLE_BUTTON;
  56. m_pButtons[i].iBitmap = i; //设置按钮位图
  57. m_pButtons[i].idCommand = i+IDS_EQUIPKIND;
  58. string.ReleaseBuffer();
  59. }
  60. m_pButtons[i-1].idCommand = ID_BUTTONCLOSE;
  61. /******************设置工具栏分割条***********************/
  62. TBBUTTON sepButton;
  63. sepButton.idCommand = 0;
  64. sepButton.fsStyle = TBSTYLE_SEP;
  65. sepButton.fsState = TBSTATE_ENABLED;
  66. sepButton.iString = 0;
  67. sepButton.iBitmap = 0;
  68. sepButton.dwData = 0;
  69. /******************设置工具栏分割条***********************/
  70. for (int j = 0; j <m_ButtonCount;j++)
  71. {
  72. VERIFY(AddButtons(1,&m_pButtons[j]));
  73. if (!((j+1) % 3))
  74. {
  75. VERIFY(AddButtons(1,&sepButton));
  76. }
  77. }
  78. return true;
  79. }
  80. void CCustomBar::OnMouseMove(UINT nFlags, CPoint point) 
  81. {
  82. CToolBarCtrl::OnMouseMove(nFlags, point);
  83. int i;
  84. for (i=0;i<17;i++)
  85. {
  86. CRect  rect;
  87. GetItemRect(i,&rect);
  88. if ((rect.right>=point.x)&&(rect.bottom>=point.y))
  89. {
  90. CString str;
  91. DoMouseMove(i);
  92. return ;
  93. }
  94. }
  95. DoMouseLeave();
  96. }
  97. void CCustomBar::DoMouseMove(int strid)
  98. {
  99. CString str;
  100. int temp;
  101. temp = strid / 4; //每3个工具栏按钮间有1个分隔条
  102. str.LoadString(strid+IDS_EQUIPKIND-temp);
  103. CEquipmentDlg * dlg;
  104. dlg = (CEquipmentDlg *)theApp.m_pMainWnd;
  105. dlg->statusbar.SetText(str,1,0);
  106. }
  107. void CCustomBar::DoMouseLeave()
  108. {
  109. CEquipmentDlg * dlg;
  110. dlg = (CEquipmentDlg *)theApp.m_pMainWnd;
  111. dlg->statusbar.SetText("",1,0);
  112. }