LineCtrl.cpp
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:2k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // LineCtrl.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "LineCtrl.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CLineCtrl
  12. CLineCtrl::CLineCtrl()
  13. {
  14. this->select = 0;
  15. }
  16. CLineCtrl::~CLineCtrl()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CLineCtrl, CStatic)
  20. //{{AFX_MSG_MAP(CLineCtrl)
  21. ON_WM_PAINT()
  22. ON_WM_LBUTTONDOWN()
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CLineCtrl message handlers
  27. void CLineCtrl::PreSubclassWindow() 
  28. {
  29. CStatic::PreSubclassWindow( );
  30. CRect rect;
  31. this->GetClientRect( &rect );
  32. int h = rect.Height( ) / 4;
  33. for( int i = 0; i < 4; i ++ )
  34. {
  35. this->rc[ i ].left = rect.left;
  36. this->rc[ i ].right = rect.right;
  37. this->rc[ i ].top = i * h;
  38. this->rc[ i ].bottom = ( i + 1 ) * h;
  39. }
  40. }
  41. void CLineCtrl::SetWidth( int width )
  42. {
  43. this->select = width / 2 - 1;
  44. this->Invalidate( );
  45. }
  46. void CLineCtrl::OnPaint() 
  47. {
  48. CPaintDC dc( this );
  49. CRect rect;
  50. this->GetClientRect( &rect );
  51. dc.FillSolidRect( &rect , RGB( 214 , 239 , 255 ) );
  52. for( int i = 0; i < 4; i ++ )
  53. {
  54. rect = this->rc[ i ];
  55. rect.top = this->rc[ i ].top + this->rc[ i ].Height( ) / 2 - ( i + 1 );
  56. rect.bottom = this->rc[ i ].top + this->rc[ i ].Height( ) / 2 + ( i + 1 );
  57. if( this->select == i )
  58. dc.FillSolidRect( &this->rc[ i ] , RGB( 255 , 255 , 255 ) );
  59. dc.FillSolidRect( &rect , RGB( 0 , 0 , 0 ) );
  60. }
  61. }
  62. void CLineCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
  63. {
  64. this->select = 0;
  65. for( int i = 0; i < 4; i ++ )
  66. {
  67. if( this->rc[ i ].PtInRect( point ) )
  68. {
  69. this->select = i ;
  70. this->Invalidate( );
  71. break;
  72. }
  73. }
  74. CStatic::OnLButtonDown( nFlags, point );
  75. }