You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
3.8 KiB
C++

2 years ago
// XTPSkinObjectListBox.cpp: implementation of the CXTPSkinObjectListBox class.
//
// This file is a part of the XTREME SKINFRAMEWORK MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "XTPSkinObject.h"
#include "XTPSkinObjectFrame.h"
#include "XTPSkinObjectListBox.h"
#include "XTPSkinManager.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
CXTPSkinObjectUser32Control::CXTPSkinObjectUser32Control()
{
ZeroMemory(&m_si, sizeof(m_si));
}
void CXTPSkinObjectUser32Control::CheckScrollBarsDraw()
{
if (m_pManager->IsComCtlV6())
return;
if (!IsWindow(m_hWnd))
return;
for (int i = 0; i < 2; i++)
{
if (m_spi[i].fVisible)
{
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
GetScrollInfo(i, &si, SIF_POS | SIF_RANGE);
if (si.nPos != m_si[i].nPos || si.nMax != m_si[i].nMax || si.nMin != m_si[i].nMin)
{
m_si[i] = si;
RedrawScrollBar(&m_spi[i]);
}
}
}
}
BEGIN_MESSAGE_MAP(CXTPSkinObjectUser32Control, CXTPSkinObjectFrame)
//{{AFX_MSG_MAP(CXTPSkinObjectUser32Control)
ON_WM_VSCROLL()
ON_WM_HSCROLL()
ON_WM_WINDOWPOSCHANGED()
ON_WM_ERASEBKGND()
ON_WM_KEYDOWN()
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CXTPSkinObjectUser32Control::OnEraseBkgnd(CDC* pDC)
{
BOOL bResult = CXTPSkinObjectFrame::OnEraseBkgnd(pDC);
CheckScrollBarsDraw();
return bResult;
}
void CXTPSkinObjectUser32Control::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CXTPSkinObjectFrame::OnKeyDown(nChar, nRepCnt, nFlags);
CheckScrollBarsDraw();
}
void CXTPSkinObjectUser32Control::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CXTPSkinObjectFrame::OnChar(nChar, nRepCnt, nFlags);
CheckScrollBarsDraw();
}
void CXTPSkinObjectUser32Control::OnHScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/)
{
Default();
CheckScrollBarsDraw();
}
void CXTPSkinObjectUser32Control::OnVScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/)
{
Default();
CheckScrollBarsDraw();
}
BOOL CXTPSkinObjectUser32Control::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
BOOL bResult = CXTPSkinObjectFrame::OnWndMsg(message, wParam, lParam, pResult);
if (message == WM_MOUSEWHEEL)
{
CheckScrollBarsDraw();
}
return bResult;
}
void CXTPSkinObjectUser32Control::OnWindowPosChanged(WINDOWPOS FAR* /*lpwndpos*/)
{
Default();
CheckScrollBarsDraw();
}
//////////////////////////////////////////////////////////////////////////
// CXTPSkinObjectComCtl32Control
CXTPSkinObjectComCtl32Control::CXTPSkinObjectComCtl32Control()
{
}
void CXTPSkinObjectComCtl32Control::CheckScrollBarsDraw()
{
if (!m_pManager->IsWin9x())
return;
CXTPSkinObjectUser32Control::CheckScrollBarsDraw();
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNCREATE(CXTPSkinObjectListBox, CXTPSkinObjectFrame)
CXTPSkinObjectListBox::CXTPSkinObjectListBox()
{
m_strClassName = _T("LISTBOX");
m_nCtlColorMessage = WM_CTLCOLORLISTBOX;
}
CXTPSkinObjectListBox::~CXTPSkinObjectListBox()
{
}
/////////////////////////////////////////////////////////////////////////////
// CXTPSkinObjectListBox message handlers