BODialogBar.cpp
上传用户:jinandeyu
上传日期:2007-01-05
资源大小:620k
文件大小:3k
源码类别:

远程控制编程

开发平台:

WINDOWS

  1. /*  Back Orifice 2000 - Remote Administration Suite
  2.     Copyright (C) 1999, Cult Of The Dead Cow
  3.     This program is free software; you can redistribute it and/or modify
  4.     it under the terms of the GNU General Public License as published by
  5.     the Free Software Foundation; either version 2 of the License, or
  6.     (at your option) any later version.
  7.     This program is distributed in the hope that it will be useful,
  8.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.     GNU General Public License for more details.
  11.     You should have received a copy of the GNU General Public License
  12.     along with this program; if not, write to the Free Software
  13.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14. The author of this program may be contacted at dildog@l0pht.com. */
  15. // BODialogBar.cpp : implementation file
  16. //
  17. #include "stdafx.h"
  18. #include "bo2kgui.h"
  19. #include "BODialogBar.h"
  20. #ifdef _DEBUG
  21. #define new DEBUG_NEW
  22. #undef THIS_FILE
  23. static char THIS_FILE[] = __FILE__;
  24. #endif
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CBODialogBar
  27. CBODialogBar::CBODialogBar()
  28. {
  29. m_cxOffset = 5;
  30. m_cyOffset = 2;
  31. }
  32. CBODialogBar::~CBODialogBar()
  33. {
  34. }
  35. int CBODialogBar::SetDialog(CWnd *pWnd)
  36. {
  37. SetChild(pWnd);
  38. return 0;
  39. }
  40. CWnd *CBODialogBar::GetDialog(void)
  41. {
  42. return m_pChildWnd;
  43. }
  44. void CBODialogBar::Hide(void)
  45. {
  46. GetDockingFrame()->ShowControlBar(this,FALSE,FALSE);
  47. }
  48. void CBODialogBar::Show(void)
  49. {
  50. GetDockingFrame()->ShowControlBar(this,TRUE,FALSE);
  51. }
  52. BEGIN_MESSAGE_MAP(CBODialogBar, CCJControlBar)
  53. //{{AFX_MSG_MAP(CBODialogBar)
  54. ON_WM_WINDOWPOSCHANGED()
  55. ON_WM_CLOSE()
  56. //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58. /////////////////////////////////////////////////////////////////////////////
  59. // CBODialogBar message handlers
  60. void CBODialogBar::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
  61. {
  62. CControlBar::OnWindowPosChanged(lpwndpos);
  63. if (m_bButtons)
  64. {
  65. if (IsFloating())
  66. {
  67. m_btnClose.ShowWindow(SW_HIDE);
  68. m_btnMinim.ShowWindow(SW_HIDE);
  69. }
  70. else
  71. {
  72. m_btnClose.ShowWindow(SW_SHOW);
  73. m_btnMinim.ShowWindow(SW_SHOW);
  74. CRect rcClose(GetButtonRect());
  75. CRect rcMinim(GetButtonRect());
  76. if (IsHorzDocked()) {
  77. rcMinim.OffsetRect(0,14);
  78. }
  79. else {
  80. rcClose.OffsetRect(14,0);
  81. }
  82. m_btnClose.MoveWindow(rcClose);
  83. m_btnMinim.MoveWindow(rcMinim);
  84.             Invalidate();     // Added
  85. }
  86. }
  87. if (m_pChildWnd->GetSafeHwnd()) {
  88. CRect rc;
  89. GetChildRect(rc);
  90. // rc.DeflateRect(1,1);
  91. m_pChildWnd->MoveWindow(rc);
  92. }
  93. }
  94. void CBODialogBar::GetChildRect(CRect &rect)
  95. {
  96. GetClientRect(&rect);
  97. if (!IsFloating())
  98. {
  99. if (IsVertDocked()) {
  100. rect.left += m_cxOffset;
  101. rect.right -= m_cxOffset;
  102. rect.top += (GetMinExt()-5);
  103. rect.bottom -= (m_iTrackBorderSize+3);
  104. }
  105. else if(IsHorzDocked()) {
  106. rect.left += (GetMinExt()-5);
  107. rect.right -= (m_iTrackBorderSize+3);
  108. rect.top += m_cyOffset;
  109. rect.bottom -= m_cyOffset;
  110. }
  111. if( rect.left > rect.right || rect.top > rect.bottom )
  112. rect = CRect(0,0,0,0);
  113. }
  114. }
  115. void CBODialogBar::OnClose() 
  116. {
  117. // TODO: Add your message handler code here and/or call default
  118. CCJControlBar::OnClose();
  119. }