sliders.cpp

来自「影像融合与融合精度评价源码影像融合与融合精度评价源码」· C++ 代码 · 共 124 行

CPP
124
字号
//
//	Sliders.cpp - the slider subclassing module
//
///////////////////////////////////////////////////////////////////
//
//	Copyright (C) 1998 Rick York - Feel free to use this as
//	you wish provided that this notice remains intact and
//	a small credit is given (like in an about box :).
//
//	This class is used to link a slider with an edit box
//	for coordinated updates.
//
///////////////////////////////////////////////////////////////////
//
//@tabs=4

#include "Stdafx.h"
#include "Sliders.h"
#include "SmartEdit.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


AfxApi CLinkSlider * GetLinkSlider( CWnd *pcwnd, int id )
{
	return (CLinkSlider *)pcwnd->GetDlgItem( id );
}


///////////////////////////////////////////////////////////


BEGIN_MESSAGE_MAP(CLinkSlider, CSliderCtrl)
	//{{AFX_MSG_MAP(CLinkSlider)
	ON_WM_HSCROLL_REFLECT()
	ON_WM_VSCROLL_REFLECT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


CLinkSlider::CLinkSlider() : CSliderCtrl()
{
	m_pEdit = NULL;
	m_iPosition = INT_MAX;
	m_bVertical = FALSE;
}


void CLinkSlider::SetEditLink( CSmartEdit *pedit )
{
	m_pEdit = pedit;
	DWORD style = GetStyle();
	if( style & TBS_VERT )
		m_bVertical = TRUE;
}


void CLinkSlider::SetSlidePos( const int pos )
{
	if( m_bVertical )
		m_iPosition = m_iMax - ( pos - m_iMin );
	else
		m_iPosition = pos;

	SetPos( m_iPosition );
}


void CLinkSlider::SetSlideRange( const int imin, const int imax )
{
	m_iMin = imin;
	m_iMax = imax;
	SetRange( m_iMin, m_iMax );
}


void CLinkSlider::HScroll( UINT ncode, UINT pos )
{
	CSliderCtrl::OnHScroll( ncode, pos, NULL );
	if( ! m_pEdit )
		return;

	switch( ncode )
		{
		case TB_PAGEUP :
		case TB_PAGEDOWN :
			m_iPosition = GetPos();
			m_pEdit->UpdateEdit( m_iPosition );
			break;
	
		case TB_THUMBTRACK :
			m_iPosition = pos;
			m_pEdit->UpdateEdit( pos );
			break;
		}
}


void CLinkSlider::VScroll( UINT ncode, UINT pos )
{
	CSliderCtrl::OnVScroll( ncode, pos, NULL );
	if( ! m_pEdit )
		return;

	switch( ncode )
		{
		// we have to play some games with vertical sliders -
		// max position is on the bottom and min is on the top

		case TB_PAGEUP :
		case TB_PAGEDOWN :
			m_iPosition = m_iMax - ( GetPos() - m_iMin );
			m_pEdit->UpdateEdit( m_iPosition );
			break;

		case TB_THUMBTRACK :
			m_iPosition = m_iMax - ( pos - m_iMin );
			m_pEdit->UpdateEdit( m_iPosition );
		}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?