⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sliderdlg.cpp

📁 这些源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
void CSliderDlg::OnChangeHorzTickfreqedit() 
{
	if (m_ctlHorzSlider.m_hWnd == NULL)
		return;
	UpdateData (TRUE);
	m_ctlHorzSlider.SetTicFreq (m_nHorzTickFreq);
	m_ctlHorzSlider.Invalidate ();
}

void CSliderDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	if (pScrollBar != (CScrollBar *) &m_ctlHorzSlider)
	{
		CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
		return;
	}
	if (m_ctlHorzSlider.GetStyle () & TBS_ENABLESELRANGE)
	{
		m_ctlHorzSlider.SetSelection (m_ctlHorzSlider.GetRangeMin(), m_ctlHorzSlider.GetPos());
		m_ctlHorzSlider.Invalidate ();
	}
}

/////////////////////////////////////////////////////////////////////////////
// CSliderDlg message handlers
/////////////////////////////////////////////////////////////////////////////
// Vertical Slider Functions
/////////////////////////////////////////////////////////////////////////////

void CSliderDlg::OnChangeVertLoweredit() 
{
	if (m_ctlVertSlider.m_hWnd == NULL)
		return;
	int nMin, nMax;
	UpdateData (TRUE);
	if (m_nVertLowerLimit >= m_nVertUpperLimit)
	{
		nMin = m_ctlVertSlider.GetRangeMin ();
		m_nVertLowerLimit = nMin;
		UpdateData (FALSE);
		return;
	}
	m_ctlVertSlider.GetRange (nMin, nMax);
	m_ctlVertSlider.SetRange (m_nVertLowerLimit, nMax, TRUE);
}

void CSliderDlg::OnChangeVertUpperedit() 
{
	if (m_ctlVertSlider.m_hWnd == NULL)
		return;
	int nMin, nMax;
	UpdateData (TRUE);
	if (m_nVertUpperLimit <= m_nVertLowerLimit)
	{
		nMax = m_ctlVertSlider.GetRangeMax ();
		m_nVertUpperLimit = nMax;
		UpdateData (FALSE);
		return;
	}
	m_ctlVertSlider.GetRange (nMin, nMax);
	m_ctlVertSlider.SetRange (nMin, m_nVertUpperLimit, TRUE);
}

void CSliderDlg::OnVertPoints() 
{
	UpdateData (TRUE);
	switch (m_nVertPoints)
	{
		case 0:
			m_ctlVertSlider.ModifyStyle (TBS_RIGHT | TBS_LEFT, TBS_BOTH, TRUE);
			break;
		case 1:
			m_ctlVertSlider.ModifyStyle (TBS_RIGHT | TBS_BOTH, TBS_LEFT, TRUE);
			break;
		case 2:
			m_ctlVertSlider.ModifyStyle (TBS_BOTH | TBS_TOP, TBS_RIGHT, TRUE);
			break;
	}
	AdjustSliderRect (m_ctlVertSlider);
}

void CSliderDlg::OnVertTickmarks() 
{
	UpdateData (TRUE);
	int nMin, nMax;
	m_ctlVertSlider.GetRange (nMin, nMax);
	if (m_bVertTickMarks)
	{
		if (m_bVertAutoTick)
		{
			m_ctlVertSlider.ModifyStyle (TBS_NOTICKS, 0, TRUE);
			m_ctlVertSlider.SetTicFreq (-1);
		}
		else
		{
			m_ctlVertSlider.ModifyStyle (0, TBS_AUTOTICKS, TRUE);
			m_ctlVertSlider.SetTicFreq (-1);
			m_ctlVertSlider.ModifyStyle (TBS_NOTICKS | TBS_AUTOTICKS, 0, TRUE);
			m_ctlVertSlider.SetTicFreq (m_nVertTickFreq);
		}
	}
	else
	{
		m_ctlVertSlider.ModifyStyle (0, TBS_NOTICKS, TRUE);
	}
	AdjustSliderRect (m_ctlVertSlider);
	m_ctlVertSlider.SetRange (nMin, nMax, TRUE);
}

void CSliderDlg::OnVertAutotick() 
{
	UpdateData (TRUE);
	int nMin, nMax;
	m_ctlVertSlider.GetRange (nMin, nMax);
	if (m_bVertAutoTick)
	{
		m_ctlVertSlider.SetTicFreq (-1);
		m_ctlVertSlider.ModifyStyle (0, TBS_AUTOTICKS, TRUE);
		m_ctlVertTickFreq.EnableWindow (FALSE);
		m_ctlVertTickFreqSpinner.EnableWindow (FALSE);
	}
	else
	{
		m_ctlVertSlider.ModifyStyle (TBS_AUTOTICKS, 0, TRUE);
		m_ctlVertSlider.SetTicFreq (m_nVertTickFreq);
//		m_ctlVertSlider.SetTicFreq (0);
		m_ctlVertTickFreq.EnableWindow (TRUE);
		m_ctlVertTickFreqSpinner.EnableWindow (TRUE);
//		m_ctlVertSlider.SetTicFreq (m_nVertTickFreq);
	}
	m_ctlVertSlider.SetRange (nMin, nMax, TRUE);
}

void CSliderDlg::OnVertEnablesel() 
{
	UpdateData (TRUE);
	if (m_bVertEnableSel)
	{
		m_ctlVertSlider.ModifyStyle (0, TBS_ENABLESELRANGE, TRUE);
		::EnableWindow (GetDlgItem (IDC_SETVERTSEL)->m_hWnd, TRUE);
		::EnableWindow (GetDlgItem (IDC_CLEARVERTSEL)->m_hWnd, FALSE);
	}
	else
	{
		m_ctlVertSlider.ClearSel (TRUE);
		m_nVertSelMax = m_nVertSelMin = -1;
		m_ctlVertSlider.ModifyStyle (TBS_ENABLESELRANGE, 0, TRUE);
		::EnableWindow (GetDlgItem (IDC_SETVERTSEL)->m_hWnd, FALSE);
		::EnableWindow (GetDlgItem (IDC_CLEARVERTSEL)->m_hWnd, FALSE);
	}
	AdjustSliderRect (m_ctlVertSlider);
}

void CSliderDlg::OnChangeVertTickfreqedit() 
{
	if (m_ctlVertSlider.m_hWnd == NULL)
		return;
	UpdateData (TRUE);
	m_ctlVertSlider.SetTicFreq (m_nVertTickFreq);
	m_ctlVertSlider.Invalidate ();
}

void CSliderDlg::OnClearvertsel() 
{
	m_nVertSelMax = m_nVertSelMin = -1;
	m_ctlVertSlider.ClearSel (TRUE);
	::EnableWindow (GetDlgItem (IDC_CLEARVERTSEL)->m_hWnd, FALSE);
	::EnableWindow (GetDlgItem (IDC_SETVERTSEL)->m_hWnd, TRUE);
}

void CSliderDlg::OnSetvertsel() 
{
	if ((m_nVertSelMax < 0) && (m_nVertSelMin < 0))
	{
		m_nVertSelMax = m_ctlVertSlider.GetPos ();
		return;
	}
	m_nVertSelMin = m_ctlVertSlider.GetPos ();
	if (m_nVertSelMin < m_nVertSelMax)
	{
		int temp = m_nVertSelMin;
		m_nVertSelMin = m_nVertSelMax;
		m_nVertSelMax = temp;
	}
	m_ctlVertSlider.SetSelection (m_nVertSelMax, m_nVertSelMin);
	m_ctlVertSlider.Invalidate ();
	::EnableWindow (GetDlgItem (IDC_SETVERTSEL)->m_hWnd, FALSE);
	::EnableWindow (GetDlgItem (IDC_CLEARVERTSEL)->m_hWnd, TRUE);
}

void CSliderDlg::OnCustomdrawVertSlider(NMHDR* pNMHDR, LRESULT* pResult) 
{
	DWORD dwMajor, dwMinor;
	bool GetCommonControlsVersion(DWORD &dwMajor, DWORD &dwMinor);

	GetCommonControlsVersion(dwMajor, dwMinor);
	if ((dwMajor != 4) && (dwMinor < 70))
	{
		*pResult = 0;
		return;
	}
	NMCUSTOMDRAW *pNMCustomDraw = (LPNMCUSTOMDRAW) pNMHDR;

	if (pNMCustomDraw->dwDrawStage == CDDS_PREPAINT)
	{
		*pResult = CDRF_NOTIFYITEMDRAW;
		return;
	}
	if ((pNMCustomDraw->dwDrawStage == CDDS_ITEMPREPAINT)
		&& (pNMCustomDraw->dwItemSpec == TBCD_CHANNEL)
		&& (m_ctlVertSlider.GetStyle () & TBS_ENABLESELRANGE))
	{
		if ((m_nVertSelMin < 0) || (m_nVertSelMax < 0))
		{
			*pResult = 0;
			return;
		}
		CBrush brYellow;
		CBrush brGreen;
		CDC dc;
		dc.Attach (pNMCustomDraw->hdc);
		brYellow.CreateSolidBrush (RGB (0xff, 0xff, 0x00));
		brGreen.CreateSolidBrush (RGB (0x00, 0xff, 0x00));
		dc.FillRect (&pNMCustomDraw->rc, &brYellow);
		CRect rc = pNMCustomDraw->rc;
		int nMin, nMax;
		m_ctlVertSlider.GetRange (nMin, nMax);
		CRect rcThumb;
		m_ctlVertSlider.GetThumbRect (&rcThumb);
		int nTop = rc.top;
		rc.top = m_nVertSelMin * (rc.bottom - nTop) / (nMax - nMin) + rcThumb.bottom - rcThumb.top;
		rc.bottom = m_nVertSelMax * (rc.bottom - nTop) / (nMax - nMin) + rcThumb.bottom - rcThumb.top;
		dc.FillRect (&rc, &brGreen);
		dc.Draw3dRect (&pNMCustomDraw->rc, GetSysColor (COLOR_3DDKSHADOW),
						GetSysColor (COLOR_3DHIGHLIGHT));
		dc.Detach ();
		*pResult = CDRF_SKIPDEFAULT;
		return;
	}
	*pResult = 0;
}

bool GetCommonControlsVersion(DWORD &dwMajor,DWORD &dwMinor)
{
HINSTANCE   hInstCtrl;
DLLGETVERSIONPROC pfDllGetVersion;
bool        bResult;

    if ((hInstCtrl = LoadLibrary ("ComCtl32.dll")) == NULL)
        return (false);
    pfDllGetVersion =
                (DLLGETVERSIONPROC)GetProcAddress(hInstCtrl,
                _T("DllGetVersion"));
   
    if(pfDllGetVersion)
    {
        DLLVERSIONINFO    dvi;
        memset (&dvi, '\0', sizeof(dvi));
        dvi.cbSize = sizeof(dvi);
        if(SUCCEEDED((*pfDllGetVersion)(&dvi)))
        {
            dwMajor = dvi.dwMajorVersion;
            dwMinor = dvi.dwMinorVersion;
            bResult = true;
        }
        else
        {
            bResult = false;
        }
    }
    else
    {
//
//  If the call to GetProcAddress failed, then the DLL is
//  is 4.0 or earlier.
//
        dwMajor = 4;
        dwMinor = 0;
        bResult = true;
    }
    FreeLibrary(hInstCtrl);
    return (true);
}

⌨️ 快捷键说明

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