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

📄 spinnertoolbar.cpp

📁 c++系统开发实例精粹内附的80例源代码 环境:windows2000,c++6.0
💻 CPP
字号:
// SpinToolBar.cpp : implementation file
//




#include "stdafx.h"
#include "SpinnerTB.h"
#include "SpinnerToolBar.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSpinToolBar

CSpinToolBar::CSpinToolBar()
{

	m_nRed		= 255;
	m_nGreen	= 255;
	m_nBlue		= 0;

	m_nGradValue = 255;
		
}

CSpinToolBar::~CSpinToolBar()
{
}


BEGIN_MESSAGE_MAP(CSpinToolBar, CToolBar)
	//{{AFX_MSG_MAP(CSpinToolBar)
	ON_WM_CREATE()
	ON_WM_HSCROLL()
	ON_WM_VSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSpinToolBar message handlers

int CSpinToolBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{

	if (CToolBar::OnCreate(lpCreateStruct) == -1)
		return -1;


	//##################################################//
    //载入工具栏
    if (!LoadToolBar (IDR_SPINNER_BAR))
        return -1;



	//##################################################//
	// Spinner Toolbar button modifying method 

	
	// 字体设备
	CClientDC dc(this);
	
	
	// 设置字体

	m_font.CreatePointFont (100, _T ("MS Sans Serif"));
    CFont* pOldFont = dc.SelectObject (&m_font);


	// TEXTMETRIC被用来控制控件的位置

	TEXTMETRIC tm;
	dc.GetTextMetrics(&tm);
	int cxChar = tm.tmAveCharWidth;
	int cyChar = tm.tmHeight + tm.tmExternalLeading;

	dc.SelectObject (pOldFont);


    CRect rect;

	//################# Red set of spinners #################

	//红色Edit 

    SetButtonInfo (0, ID_EDIT_R, TBBS_SEPARATOR , cxChar * 8);
	GetItemRect (0, &rect);
    rect.bottom = rect.top + (cyChar + 6);
	
	if(!m_wndEdit_r.CreateEx(WS_EX_CLIENTEDGE, // Make a 3D-border
      _T("EDIT"), NULL,
     WS_TABSTOP | ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_VISIBLE | WS_CHILD,
      rect, this, ID_EDIT_R))

	return -1;
	
	//红色Spinner 

	m_wndEdit_r.SetFont (&m_font);

	SetButtonInfo (1, ID_SPIN_R, TBBS_SEPARATOR, cxChar * 3);
	GetItemRect (1, &rect);
    rect.bottom = rect.top + (cyChar + 6);

	
	if (!m_wndSpin_r.Create(WS_CHILD | WS_VISIBLE | // 风格
						UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_ARROWKEYS,
						rect,					// 位置
						this,		// 父窗口
						ID_SPIN_R))		// ID
	
	
	return -1;
	
	m_wndSpin_r.SetFont (&m_font);


	//################# Green set of spinners #################

	// 绿色Edit 

	SetButtonInfo (2, ID_EDIT_G, TBBS_SEPARATOR , cxChar * 8);
	GetItemRect (2, &rect);
    rect.bottom = rect.top + (cyChar + 6);
	
	if(!m_wndEdit_g.CreateEx(WS_EX_CLIENTEDGE, // Make a 3D-border
      _T("EDIT"), NULL,
     WS_TABSTOP |  ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_VISIBLE | WS_CHILD,
      rect, this, ID_EDIT_G))

	return -1;

	m_wndEdit_g.SetFont (&m_font);

	
	// 绿色Spinner 

	SetButtonInfo (3, ID_SPIN_G, TBBS_SEPARATOR, cxChar * 3);
	GetItemRect (3, &rect);
    rect.bottom = rect.top + (cyChar + 6);

	
	if (!m_wndSpin_g.Create(WS_CHILD | WS_VISIBLE | 
						UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_ARROWKEYS,
						rect,	
						this,
						ID_SPIN_G))		
	
	
	return -1;
	
	m_wndSpin_g.SetFont (&m_font);


	//################# Blue set of spinners #################

	// 蓝色Edit 

	SetButtonInfo (4, ID_EDIT_B, TBBS_SEPARATOR , cxChar * 8);
	GetItemRect (4, &rect);
    rect.bottom = rect.top + (cyChar + 6);

	if(!m_wndEdit_b.CreateEx(WS_EX_CLIENTEDGE, // Make a 3D-border
      _T("EDIT"), NULL,
      WS_TABSTOP | ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_VISIBLE | WS_CHILD,
      rect, this, ID_EDIT_B))

	return -1;


	m_wndEdit_b.SetFont (&m_font);

	
	// 蓝色Spinner

	SetButtonInfo (5, ID_SPIN_B, TBBS_SEPARATOR, cxChar * 3);
	GetItemRect (5, &rect);
    rect.bottom = rect.top + (cyChar + 6);

	
	if (!m_wndSpin_b.Create(WS_CHILD | WS_VISIBLE | 
						UDS_ALIGNRIGHT | UDS_SETBUDDYINT | UDS_ARROWKEYS,
						rect,				
						this,	
						ID_SPIN_B))		
	
	return -1;

	m_wndSpin_b.SetFont (&m_font);


	//################# 滑动条,编辑框,微调组件,用于控制梯度 #################

	SetButtonInfo (6, ID_EDIT_SLD, TBBS_SEPARATOR , cxChar * 8);
	GetItemRect (6, &rect);
    rect.bottom = rect.top + (cyChar + 6);
	
	if(!m_wndEdit_sld.CreateEx(WS_EX_CLIENTEDGE, // Make a 3D-border
      _T("EDIT"), NULL,
      //WS_TABSTOP |
	  ES_READONLY | ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_VISIBLE | WS_CHILD,
      rect, this, ID_EDIT_SLD))

	return -1;


	m_wndEdit_sld.SetFont (&m_font);

	SetButtonInfo (7, ID_SLIDER, TBBS_SEPARATOR, cxChar * 12);
	GetItemRect (7, &rect);
    rect.bottom = rect.top + (cyChar + 2);

	
	if (!m_wndSlider.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |// 风格
						TBS_HORZ | TBS_AUTOTICKS |
						//TBS_NOTICKS |
						TBS_BOTTOM,
						rect,					// 位置
						this,		// 父窗口
						ID_SLIDER))		// ID
	
	return -1;

	
	
	// 不需要可见,不使用WS_VISIBLE风格

	if (!m_wndSpin_sld.Create(WS_CHILD | 
						UDS_SETBUDDYINT, //UDS_SETBUDDYYINT可以连接编辑框的显示字符
						rect,				
						this,		
						ID_SPIN_SLD))	
	
	return -1;


	// 设置Edit框的默认值
	SetPositions();

	return 0;

}


void CSpinToolBar::SetPositions()
{
	

	// Set Red Spinner and Edit box value is OK

	m_wndSpin_r.SetRange(0, 255);
	m_wndSpin_r.SetBuddy(&m_wndEdit_r);
	m_wndSpin_r.SetPos(m_nRed);

	
	// Set Green Spinner and Edit box value is OK

	m_wndSpin_g.SetRange(0, 255);
	m_wndSpin_g.SetBuddy(&m_wndEdit_g);
	m_wndSpin_g.SetPos(m_nGreen);
	
	
	// Set Blue Spinner and Edit box value is OK

	m_wndSpin_b.SetRange(0, 255);
	m_wndSpin_b.SetBuddy(&m_wndEdit_b);
	m_wndSpin_b.SetPos(m_nBlue);

	
	// Set Slider, Invisible Spinner and Edit box value is OK
	
	m_wndSlider.SetRange(0, 255);
	m_wndSpin_sld.SetRange(0, 255);
	
	m_wndSpin_sld.SetBuddy(&m_wndEdit_sld);
	
	m_wndSlider.SetPos(m_nGradValue);
	m_wndSpin_sld.SetPos(m_wndSlider.GetPos());


}

void CSpinToolBar::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
		
	CSliderCtrl* m_wndSlider = (CSliderCtrl*) pScrollBar;
	m_wndSpin_sld.SetPos(m_wndSlider->GetPos());//设置Slider值

	HCURSOR hCursor = AfxGetApp()->LoadCursor(IDC_CURSOR_SLIDER); 
	::SetCursor(hCursor);
	
	CToolBar::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CSpinToolBar::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	

	CSpinButtonCtrl* m_wndSpin_r = (CSpinButtonCtrl*) pScrollBar;
	CSpinButtonCtrl* m_wndSpin_g = (CSpinButtonCtrl*) pScrollBar;
	CSpinButtonCtrl* m_wndSpin_b = (CSpinButtonCtrl*) pScrollBar;

	HCURSOR hCursor = AfxGetApp()->LoadCursor(IDC_CURSOR_SPINNER); 
	::SetCursor(hCursor);	

	CToolBar::OnVScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

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