XTPSkinObjectListView.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPSkinObjectListView.cpp: implementation of the CXTPSkinObjectListView class.
  2. //
  3. // This file is a part of the XTREME SKINFRAMEWORK MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "XTPSkinManager.h"
  22. #include "XTPSkinObjectListView.h"
  23. #ifdef _DEBUG
  24. #undef THIS_FILE
  25. static char THIS_FILE[]=__FILE__;
  26. #define new DEBUG_NEW
  27. #endif
  28. //////////////////////////////////////////////////////////////////////
  29. // Construction/Destruction
  30. //////////////////////////////////////////////////////////////////////
  31. IMPLEMENT_DYNCREATE(CXTPSkinObjectListView, CXTPSkinObjectFrame)
  32. CXTPSkinObjectListView::CXTPSkinObjectListView()
  33. {
  34. m_strClassName = _T("LISTVIEW");
  35. m_nCtlColorMessage = WM_CTLCOLORLISTBOX;
  36. }
  37. CXTPSkinObjectListView::~CXTPSkinObjectListView()
  38. {
  39. }
  40. BEGIN_MESSAGE_MAP(CXTPSkinObjectListView, CXTPSkinObjectComCtl32Control)
  41. //{{AFX_MSG_MAP(CXTPSkinObjectListView)
  42. ON_WM_VSCROLL()
  43. ON_WM_HSCROLL()
  44. ON_WM_CREATE()
  45. //}}AFX_MSG_MAP
  46. END_MESSAGE_MAP()
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CXTPSkinObjectListView message handlers
  49. void CXTPSkinObjectListView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  50. {
  51. if (pScrollBar == NULL && m_pManager->IsWin9x() && (nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK))
  52. {
  53. BOOL bListView = (GetStyle() & LVS_REPORT) == LVS_LIST;
  54. DWORD dwIconSpacing = (DWORD)SendMessage(LVM_GETITEMSPACING, TRUE);
  55. int dx = int((int)nPos - GetScrollPos(SB_HORZ)) * (!bListView ? 1 : LOWORD(dwIconSpacing));
  56. SendMessage(LVM_SCROLL, dx, 0);
  57. return;
  58. }
  59. CXTPSkinObjectComCtl32Control::OnHScroll(nSBCode, nPos, pScrollBar);
  60. }
  61. void CXTPSkinObjectListView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  62. {
  63. if (pScrollBar == NULL && m_pManager->IsWin9x() && (nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK))
  64. {
  65. DWORD dwIconSpacing = (DWORD)SendMessage(LVM_GETITEMSPACING, TRUE);
  66. int dy = int((int)nPos - GetScrollPos(SB_VERT)) * HIWORD(dwIconSpacing);
  67. SendMessage(LVM_SCROLL, 0, dy);
  68. return;
  69. }
  70. CXTPSkinObjectComCtl32Control::OnVScroll(nSBCode, nPos, pScrollBar);
  71. }
  72. void CXTPSkinObjectListView::OnSkinChanged(BOOL bPrevState, BOOL bNewState)
  73. {
  74. SendMessage(LVM_SETBKCOLOR, 0, bNewState ? GetColor(COLOR_WINDOW) : GetSysColor(COLOR_WINDOW));
  75. SendMessage(LVM_SETTEXTCOLOR, 0, bNewState ? GetColor(COLOR_WINDOWTEXT) : GetSysColor(COLOR_WINDOWTEXT));
  76. SendMessage(LVM_SETTEXTBKCOLOR, 0, bNewState ? GetColor(COLOR_WINDOW) : GetSysColor(COLOR_WINDOW));
  77. CXTPSkinObjectFrame::OnSkinChanged(bPrevState, bNewState);
  78. }
  79. int CXTPSkinObjectListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  80. {
  81. if (CXTPSkinObjectFrame::OnCreate(lpCreateStruct) == -1)
  82. return -1;
  83. if (GetSkinManager()->IsEnabled())
  84. {
  85. SendMessage(LVM_SETBKCOLOR, 0, GetColor(COLOR_WINDOW));
  86. SendMessage(LVM_SETTEXTBKCOLOR, 0, GetColor(COLOR_WINDOW));
  87. SendMessage(LVM_SETTEXTCOLOR, 0, GetColor(COLOR_WINDOWTEXT));
  88. }
  89. return 0;
  90. }