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

对话框与窗口

开发平台:

Visual C++

  1. // XTPSkinObjectListBox.cpp: implementation of the CXTPSkinObjectListBox 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 "XTPSkinObjectListBox.h"
  22. #include "XTPSkinManager.h"
  23. #ifdef _DEBUG
  24. #undef THIS_FILE
  25. static char THIS_FILE[]=__FILE__;
  26. #define new DEBUG_NEW
  27. #endif
  28. CXTPSkinObjectUser32Control::CXTPSkinObjectUser32Control()
  29. {
  30. ZeroMemory(&m_si, sizeof(m_si));
  31. }
  32. void CXTPSkinObjectUser32Control::CheckScrollBarsDraw()
  33. {
  34. if (m_pManager->IsComCtlV6())
  35. return;
  36. if (!IsWindow(m_hWnd))
  37. return;
  38. for (int i = 0; i < 2; i++)
  39. {
  40. if (m_spi[i].fVisible)
  41. {
  42. SCROLLINFO si;
  43. si.cbSize = sizeof(SCROLLINFO);
  44. GetScrollInfo(i, &si, SIF_POS | SIF_RANGE);
  45. if (si.nPos != m_si[i].nPos || si.nMax != m_si[i].nMax || si.nMin != m_si[i].nMin)
  46. {
  47. m_si[i] = si;
  48. RedrawScrollBar(&m_spi[i]);
  49. }
  50. }
  51. }
  52. }
  53. BEGIN_MESSAGE_MAP(CXTPSkinObjectUser32Control, CXTPSkinObjectFrame)
  54. //{{AFX_MSG_MAP(CXTPSkinObjectUser32Control)
  55. ON_WM_VSCROLL()
  56. ON_WM_HSCROLL()
  57. ON_WM_WINDOWPOSCHANGED()
  58. ON_WM_ERASEBKGND()
  59. ON_WM_KEYDOWN()
  60. ON_WM_CHAR()
  61. //}}AFX_MSG_MAP
  62. END_MESSAGE_MAP()
  63. BOOL CXTPSkinObjectUser32Control::OnEraseBkgnd(CDC* pDC)
  64. {
  65. BOOL bResult = CXTPSkinObjectFrame::OnEraseBkgnd(pDC);
  66. CheckScrollBarsDraw();
  67. return bResult;
  68. }
  69. void CXTPSkinObjectUser32Control::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
  70. {
  71. CXTPSkinObjectFrame::OnKeyDown(nChar, nRepCnt, nFlags);
  72. CheckScrollBarsDraw();
  73. }
  74. void CXTPSkinObjectUser32Control::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
  75. {
  76. CXTPSkinObjectFrame::OnChar(nChar, nRepCnt, nFlags);
  77. CheckScrollBarsDraw();
  78. }
  79. void CXTPSkinObjectUser32Control::OnHScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/)
  80. {
  81. Default();
  82. CheckScrollBarsDraw();
  83. }
  84. void CXTPSkinObjectUser32Control::OnVScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/)
  85. {
  86. Default();
  87. CheckScrollBarsDraw();
  88. }
  89. BOOL CXTPSkinObjectUser32Control::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  90. {
  91. BOOL bResult = CXTPSkinObjectFrame::OnWndMsg(message, wParam, lParam, pResult);
  92. if (message == WM_MOUSEWHEEL)
  93. {
  94. CheckScrollBarsDraw();
  95. }
  96. return bResult;
  97. }
  98. void CXTPSkinObjectUser32Control::OnWindowPosChanged(WINDOWPOS FAR* /*lpwndpos*/)
  99. {
  100. Default();
  101. CheckScrollBarsDraw();
  102. }
  103. //////////////////////////////////////////////////////////////////////////
  104. // CXTPSkinObjectComCtl32Control
  105. CXTPSkinObjectComCtl32Control::CXTPSkinObjectComCtl32Control()
  106. {
  107. }
  108. void CXTPSkinObjectComCtl32Control::CheckScrollBarsDraw()
  109. {
  110. if (!m_pManager->IsWin9x())
  111. return;
  112. CXTPSkinObjectUser32Control::CheckScrollBarsDraw();
  113. }
  114. //////////////////////////////////////////////////////////////////////
  115. // Construction/Destruction
  116. //////////////////////////////////////////////////////////////////////
  117. IMPLEMENT_DYNCREATE(CXTPSkinObjectListBox, CXTPSkinObjectFrame)
  118. CXTPSkinObjectListBox::CXTPSkinObjectListBox()
  119. {
  120. m_strClassName = _T("LISTBOX");
  121. m_nCtlColorMessage = WM_CTLCOLORLISTBOX;
  122. }
  123. CXTPSkinObjectListBox::~CXTPSkinObjectListBox()
  124. {
  125. }
  126. /////////////////////////////////////////////////////////////////////////////
  127. // CXTPSkinObjectListBox message handlers