GuiToolBar.cpp
上传用户:wlkj888
上传日期:2022-08-01
资源大小:806k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // GuiToolBar.cpp: implementation of the GuiToolBar class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "OutlookDemo.h"
  6. #include "GuiToolBar.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. BEGIN_MESSAGE_MAP(GuiToolBar, CControlBar)
  16. //{{AFX_MSG_MAP(GuiToolBar)
  17. // NOTE - the ClassWizard will add and remove mapping macros here.
  18. //    DO NOT EDIT what you see in these blocks of generated code !
  19. ON_WM_CREATE()
  20.     ON_WM_PAINT()
  21.     ON_WM_NCPAINT()
  22.     ON_WM_NCCALCSIZE()
  23.     ON_WM_WINDOWPOSCHANGING()
  24.     ON_WM_CAPTURECHANGED()
  25.     ON_WM_SETTINGCHANGE()
  26.     ON_WM_LBUTTONUP()
  27.     ON_WM_MOUSEMOVE()
  28.     ON_WM_NCLBUTTONDOWN()
  29.     ON_WM_LBUTTONDOWN()
  30.     ON_WM_LBUTTONDBLCLK()
  31.     ON_WM_RBUTTONDOWN()
  32.     ON_WM_NCMOUSEMOVE()
  33.     ON_WM_NCHITTEST()
  34.     ON_WM_CLOSE()
  35.     ON_WM_SIZE()
  36.   
  37. //}}AFX_MSG_MAP
  38. END_MESSAGE_MAP()
  39. GuiToolBar::GuiToolBar()
  40. {
  41. m_iBorder=4;
  42. cb.CreateSysColorBrush(COLOR_BTNFACE);
  43. }
  44. GuiToolBar::~GuiToolBar()
  45. {
  46. }
  47. BOOL GuiToolBar::Create (CWnd* pParentWnd,CString m_szTitle, UINT uID,DWORD dwStyle)
  48. {
  49. ASSERT_VALID(pParentWnd);
  50. // return FALSE;
  51. CString m_szClassName=::AfxRegisterWndClass(CS_DBLCLKS,LoadCursor(NULL,IDC_ARROW),cb);
  52. if (!CWnd::Create(m_szClassName,m_szTitle,dwStyle,CRect(0,0,0,0),pParentWnd,uID))
  53. return FALSE;
  54. return TRUE;
  55. }
  56. void GuiToolBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
  57. {
  58. //in this moment nothing to do
  59. }
  60. CSize GuiToolBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
  61. {
  62. //incialmente esta barra no flotara lo que nos obliga
  63. //a ignorar los parametros de la funci髇
  64. CRect rcWindow;
  65. //necesitamos hallar el ancho de la ventana, por que el Alto
  66. //le indicamos al sistema que lo tome total
  67. m_pDockSite->GetControlBar(AFX_IDW_DOCKBAR_LEFT)->GetWindowRect(&rcWindow);
  68. return CSize(rcWindow.Width(),32767);
  69. }
  70. int GuiToolBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
  71. {
  72. if (CControlBar::OnCreate(lpCreateStruct)==-1)
  73. return -1;
  74. return 0;
  75. }
  76. void GuiToolBar::OnNcPaint()
  77. {
  78. CRect rcWindow;
  79. CWindowDC dc(this);
  80. EraseNonClient();
  81. GetWindowRect(&rcWindow);
  82. dc.FillSolidRect(rcWindow.right,rcWindow.top,rcWindow.right+1,rcWindow.bottom,::GetSysColor(COLOR_BTNSHADOW)); 
  83. }
  84. void GuiToolBar::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp)
  85. {
  86. //esta funci髇 si es muy importante, porque le daremos
  87. //el tama駉 del area cliente
  88. lpncsp->rgrc[0].top+=m_iBorder;
  89. lpncsp->rgrc[0].bottom-=m_iBorder;
  90. lpncsp->rgrc[0].left+=m_iBorder;
  91. lpncsp->rgrc[0].right-=m_iBorder;
  92. GetWindowRect(&mrcBorder);
  93. mrcBorder.left=mrcBorder.right-m_iBorder;
  94. }
  95. UINT GuiToolBar::OnNcHitTest(CPoint point)
  96. {
  97. CRect m_rcWindow;
  98. GetWindowRect(&m_rcWindow);
  99. point.Offset(-m_rcWindow.left,-m_rcWindow.top);
  100. if (m_rcWindow.PtInRect(point))
  101. return HTSIZE;
  102.     else
  103.         return CControlBar::OnNcHitTest(point);
  104. }
  105. void GuiToolBar::OnNcLButtonDown(UINT nHitTest, CPoint point)
  106. {
  107. /* if (nHitTest == HTSIZE)
  108. {
  109. //CPoint  cp;
  110. //GetCursorPos(&cp);
  111. //if (mrcBorder.PtInRect(point))
  112. // ; //permita redimensionar la ventana
  113. }
  114. else
  115. CControlBar::OnNcLButtonDown(UINT nHitTest, CPoint point);*/
  116. }
  117. void GuiToolBar::OnLButtonUp(UINT nFlags, CPoint point)
  118. {
  119. //m_pDockSite->RecalcLayout();
  120. }