SkinSlider.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #include "StdAfx.h"
  2. #include "skinslider.h"
  3. #include "SlideSkin.h"
  4. CSkinSlider::CSkinSlider( void )
  5. {
  6. m_pSliderSkin = GetSkin().GetSliderSkin();
  7. }
  8. CSkinSlider::~CSkinSlider( void )
  9. {
  10. HookWindow( ( HWND ) NULL );
  11. }
  12. void CSkinSlider::InstallSkin( HWND hWnd )
  13. {
  14. m_bEnableSkin = TRUE;
  15. HookWindow( ( HWND ) NULL );
  16. int r = HookWindow( hWnd );
  17. m_pSliderSkin = GetSkin().GetSliderSkin();
  18. if ( m_pSliderSkin == NULL )
  19. {
  20. m_bEnableSkin = FALSE;
  21. }
  22. DWORD style = GetWindowLong( m_hWnd,GWL_STYLE );
  23. DWORD exstyle = GetWindowLong( m_hWnd,GWL_EXSTYLE );
  24. if ( (style & TBS_VERT) == TBS_VERT )
  25. {
  26. m_bVert = TRUE;
  27. }
  28. else
  29. {
  30. m_bVert = FALSE;
  31. }
  32. SetWindowPos( m_hWnd,NULL,0,0,0,0,SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER );
  33. }
  34. void CSkinSlider::LoadSkin()
  35. {
  36. m_bEnableSkin = FALSE;
  37. m_pSliderSkin = GetSkin().GetSliderSkin();
  38. if ( m_pSliderSkin == NULL )
  39. {
  40. m_bEnableSkin = FALSE;
  41. }
  42. else
  43. {
  44. m_bEnableSkin = TRUE;
  45. }
  46. SetWindowPos( m_hWnd,NULL,0,0,0,0,SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER );
  47. }
  48. LRESULT CSkinSlider::OnWndMsg( UINT msg , WPARAM wp , LPARAM lp )
  49. {
  50. switch ( msg )
  51. {
  52. case WM_MOUSELEAVE:
  53. OnMouseLeave();
  54. return 0;
  55. }
  56. return CSkinWnd::OnWndMsg( msg,wp,lp );
  57. }
  58. void CSkinSlider::OnPaint()
  59. {
  60. CSliderCtrl * pSlider = ( CSliderCtrl * ) CWnd::FromHandle( m_hWnd );
  61. CPaintDC dc ( pSlider );
  62. DrawSlider( &dc );
  63. }
  64. BOOL CSkinSlider::OnEraseBkgnd( CDC * pDC )
  65. {
  66. // CSpinButtonCtrl
  67. return TRUE;
  68. }
  69. void CSkinSlider::OnMouseMove( UINT nFlags , CPoint point )
  70. {
  71. Default();
  72. }
  73. void CSkinSlider::OnLButtonDown( UINT nFlags , CPoint point )
  74. {
  75. Default();
  76. }
  77. void CSkinSlider::OnMouseLeave()
  78. {
  79. }
  80. void CSkinSlider::OnLButtonUp( UINT nFlags , CPoint point )
  81. {
  82. Default();
  83. }
  84. UINT CSkinSlider::HitTest( CPoint point )
  85. {
  86. return 1;
  87. }
  88. void CSkinSlider::DrawSlider( CDC * pDC )
  89. {
  90. if ( m_pSliderSkin == NULL )
  91. {
  92. return;
  93. }
  94. CSliderCtrl * pSlider = ( CSliderCtrl * ) CWnd::FromHandle( m_hWnd );
  95. CRect rtClient, rtChannel, rtThumb;
  96. GetClientRect( rtClient );
  97. pSlider->GetChannelRect( rtChannel );
  98. pSlider->GetThumbRect( rtThumb );
  99. m_pSliderSkin->DrawImageSection( pDC,rtClient,m_pSliderSkin->m_imageBackground );
  100. m_pSliderSkin->DrawImageSection( pDC,rtChannel,m_pSliderSkin->m_imageChannel );
  101. CMemDC dc ( pDC,rtThumb );
  102. if ( m_bVert )
  103. {
  104. m_pSliderSkin->DrawImageSection( &dc,rtThumb,m_pSliderSkin->m_imageThumbVert );
  105. }
  106. else
  107. {
  108. m_pSliderSkin->DrawImageSection( &dc,rtThumb,m_pSliderSkin->m_imageThumbHorz );
  109. }
  110. }