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

📄 page1.cpp

📁 一个LED楼宇亮化同步控制源码
💻 CPP
字号:
// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "SetColorSty.h"
#include "Page1.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPage1 property page

IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
	//{{AFX_DATA_INIT(CPage1)
	m_stye = _T("");
	m_sldBlueValue = 0;
	m_sldGreenValue = 0;
	m_sldRedValue = 0;
	m_edtRedValue = _T("");
	m_edtGreenValue = _T("");
	m_edtBlueValue = _T("");
	m_stye1 = _T("");
	m_count = 0;
	//}}AFX_DATA_INIT
}

CPage1::~CPage1()
{
}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_LIST2, m_styec);
	DDX_Control(pDX, IDC_SPIN_RED, m_spinRed);
	DDX_Control(pDX, IDC_SPIN_GREEN, m_spinGreen);
	DDX_Control(pDX, IDC_SPIN_BLUE, m_spinBlue);
	DDX_Control(pDX, IDC_SLIDER_GREEN, m_sldGreen);
	DDX_Control(pDX, IDC_SLIDER_BLUE, m_sldBlue);
	DDX_Control(pDX, IDC_SLIDER_RED, m_sldRed);
	DDX_LBString(pDX, IDC_LIST1, m_stye);
	DDX_Slider(pDX, IDC_SLIDER_BLUE, m_sldBlueValue);
	DDX_Slider(pDX, IDC_SLIDER_GREEN, m_sldGreenValue);
	DDX_Slider(pDX, IDC_SLIDER_RED, m_sldRedValue);
	DDX_Text(pDX, IDC_EDIT_RED, m_edtRedValue);
	DDX_Text(pDX, IDC_EDIT_GREEN, m_edtGreenValue);
	DDX_Text(pDX, IDC_EDIT_BLUE, m_edtBlueValue);
	DDX_LBString(pDX, IDC_LIST2, m_stye1);
	DDX_Text(pDX, IDC_EDIT_COUNT, m_count);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CPage1)
	ON_WM_HSCROLL()
	ON_WM_CANCELMODE()
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_REMOVE, OnButtonRemove)
	ON_WM_PAINT()
	ON_WM_CAPTURECHANGED()
	ON_LBN_SELCHANGE(IDC_LIST2, OnSelchangeList2)
	ON_LBN_DBLCLK(IDC_LIST2, OnDblclkList2)
	ON_LBN_DBLCLK(IDC_LIST1, OnDblclkList1)
	ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers

void CPage1::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc(this);
	int index;
	index=((CListBox* )GetDlgItem(IDC_LIST2))->GetCaretIndex();	

    Color[index].m_Blue=m_sldBlue.GetPos();
	Color[index].m_Green=m_sldGreen.GetPos();
	Color[index].m_Red=m_sldRed.GetPos();

	m_spinRed.SetPos(m_sldRed.GetPos()); 
	m_spinGreen.SetPos(m_sldGreen.GetPos());
	m_spinBlue.SetPos(m_sldBlue.GetPos());

    CBrush Brush(Color[index].Color());
	dc.FillRect(&m_RectNew,&Brush);
    
	CPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CPage1::OnCancelMode() 
{
	CPropertyPage::OnCancelMode();
	
	// TODO: Add your message handler code here
	
}

BOOL CPage1::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	
	// TODO: Add extra initialization here
	CClientDC dc(this);

	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	m_sldBlue.SetRange(0,255);     //Set range of sliders 
	m_sldGreen.SetRange(0,255);
	m_sldRed.SetRange(0,255);
    
	m_spinRed.SetRange(0,255);    //Set range of spins
	m_spinGreen.SetRange(0,255);
	m_spinBlue.SetRange(0,255);
	
	m_lstIndex=0;
    
    for(int i=0;i<count[0];i++)
	{
		SetList(List[0][i]);
	}

   
	int Border=(m_RectNew.right - m_RectNew.left) / 22;
	
	m_RectNew.InflateRect (-Border, -Border);

	// Get the rect of color sample area to show the color
	GetDlgItem(IDC_COLOR_NEW)->GetWindowRect(&m_RectNew);
	ScreenToClient(&m_RectNew);

	//Set styes
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("矩形(从上至下)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("矩形(从左至右)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("矩形(从下至上)");
    ((CListBox* )GetDlgItem(IDC_LIST1))->AddString("矩形(从右至左)");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("彩虹(从上到下)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("彩虹(从左到右)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("彩虹(从下到上)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("彩虹(从右到左)");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("积木(从上到下)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("积木(从左到右)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("积木(从下到上)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("积木(从右到左)");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("盒子(从外到里)");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("彩盒(从外到里)");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("盒子(从里到外)");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("彩盒(从里到外)");	

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("七色(从上到下)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("七色(从左到右)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("七色(从下到上)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("七色(从右到左)");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("渐变");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("消隐(从外到里)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("消隐(从里到外)");
	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("消隐(蓝色)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("消隐(红色)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("消隐(绿色)");	

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("菱形(从里到外)");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("菱形(从外到里)");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("圆形变幻");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("圆形象素");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("圆形用线");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("圆形多彩象素");
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("圆形多彩用线");	

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("交替变幻");

	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("跑马滚动");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("单点滚动");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("单线滚动");	
	((CListBox* )GetDlgItem(IDC_LIST1))->AddString("单色变幻");	

	//设定定时器,检查RGB变幻值
	SetTimer(1, 1000, 0);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPage1::OnButtonAdd()
//添加播放列表 ,假如选择了要加的项就加入相应的项,否则给出警告 
{
	// TODO: Add your control notification handler code here
	if (TRUE==m_selChange) //判断是否选择了项
	{
		int index;
		index=((CListBox* )GetDlgItem(IDC_LIST1))->GetCaretIndex();//得到相应的序号
		List[0][::count[0]++]=index;//添加播放项 
		UpdateData();
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString(m_stye);//在列表2中添加相应项 
	}
	else
	{
		MessageBox("请选择要添加的项!!");
	}
	
}

void CPage1::OnButtonRemove()
//从列表中删除选定的项,没选的时候默认为删除第一项 
{
	// TODO: Add your control notification handler code here
	int index;
	UpdateData();
	index=((CListBox* )GetDlgItem(IDC_LIST2))->GetCaretIndex();
    for(int i=index;i<::count[0];i++)//删除相关的项
	{
		List[0][i]=List[0][i+1];
	}
	::count[0]--; //列表数减一        
	((CListBox* )GetDlgItem(IDC_LIST2))->DeleteString(index);
}


void CPage1::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	CBrush Brush(Color[m_lstIndex].Color());//初始化时显示列表第一项的颜色
	dc.FillRect(&m_RectNew,&Brush);
	// Do not call CPropertyPage::OnPaint() for painting messages
}

void CPage1::OnCaptureChanged(CWnd *pWnd) 
{
	// TODO: Add your message handler code here
	
	CPropertyPage::OnCaptureChanged(pWnd);
}

void CPage1::SetList(int index)
//设置列表函数
{	
	switch (index)
	{
	case 0:
		m_styec.AddString("矩形(从上到下)");
		break;
	case 1:
		m_styec.AddString("矩形(从左到右)");
		break;
	case 2:
		m_styec.AddString("矩形(从下至上)");
		break;
	case 3:
		m_styec.AddString("矩形(从右到左)");
		break;
		
    case 4:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("彩虹(从上到下)");
		break;
	case 5:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("彩虹(从左到右)");
		break;
	case 6:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("彩虹(从下到上)");
		break;
	case 7:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("彩虹(从右到左)");
		break;

	case 8:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("积木(从上到下)");
		break;
	case 9:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("积木(从左到右)");
		break;
	case 10:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("积木(从下到上)");
		break;
	case 11:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("积木(从右到左)");
		break;

	case 12:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("盒子(从外到里)");
		break;
	case 13:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("彩盒(从外到里)");
		break;
	case 14:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("盒子(从里到外)");
		break;
	case 15:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("彩盒(从里到外)");
		break;

	case 16:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("七色(从上到下)");
		break;
	case 17:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("七色(从左到右)");
		break ;
	case 18:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("七色(从下到上)");
		break ;
	case 19:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("七色(从右到左)");
		break ;

	case 20:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("渐变");

	case 21:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("消隐(从外到里)"); 
		break ;
	case 22:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("消隐(从里到外)");
		break ;	
	case 23:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("消隐(蓝色)"); 
		break ;
	case 24:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("消隐(红色)");
		break ;	
	case 25:
		((CListBox*)GetDlgItem(IDC_LIST2))->AddString("消隐(绿色)");
		break ;			

	case 26:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("菱形(从里到外)");
		break;
	case 27:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("菱形(从外到里)");
		break;

	case 28:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("圆形变幻");
		break;
	case 29:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("圆形象素");
		break;
	case 30:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("圆形用线");
		break;
	case 31:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("圆形多彩象素");
		break;
	case 32:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("圆形多彩用线");
		break;


	case 33:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("交替变幻");
		break;

	case 34:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("跑马滚动");
		break;
	case 35:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("单点滚动");
		break;
	case 36:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("单线滚动");
		break;

	case 37:
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString("单色变幻");
		break;

	default:
		break;
	}
   	
}

void CPage1::OnSelchangeList2()
// 选择List2的项发生改变时,改变相应的项
{
	// TODO: Add your control notification handler code here
	CClientDC dc(this);
	m_lstIndex=((CListBox *)GetDlgItem(IDC_LIST2))->GetCaretIndex();//得到被选择的项数

	m_sldRedValue=Color[m_lstIndex].m_Red;
	m_sldBlueValue=Color[m_lstIndex].m_Green;
	m_sldGreenValue=Color[m_lstIndex].m_Blue;

	m_spinRed.SetPos(Color[m_lstIndex].m_Red); 
	m_spinGreen.SetPos(Color[m_lstIndex].m_Green);
	m_spinBlue.SetPos(Color[m_lstIndex].m_Blue);
    
	m_sldRed.SetPos(Color[m_lstIndex].m_Red);
	m_sldBlue.SetPos(Color[m_lstIndex].m_Blue);
	m_sldGreen.SetPos(Color[m_lstIndex].m_Green);
	InvalidateRect(&m_RectNew);	
}

void CPage1::OnDblclkList2() 
//List2的双击事件,响应的与OnButtonRemove()相同
{
	// TODO: Add your control notification handler code here
	int index;
	UpdateData();
	index=((CListBox* )GetDlgItem(IDC_LIST2))->GetCaretIndex();
    for(int i=index;i<::count[0];i++)
	{
		List[0][i]=List[0][i+1];
	}
	::count[0]--;
	((CListBox* )GetDlgItem(IDC_LIST2))->DeleteString(index);
}

void CPage1::OnDblclkList1() 
//List1的双击事件,响应的与OnButtonRemove()相同
{
	// TODO: Add your control notification handler code here
    int index;
	index=((CListBox* )GetDlgItem(IDC_LIST1))->GetCaretIndex();
	List[0][::count[0]++]=index;
	UpdateData();
    ((CListBox* )GetDlgItem(IDC_LIST2))->AddString(m_stye);	
}

void CPage1::OnSelchangeList1() 
{
	// TODO: Add your control notification handler code here
	m_selChange=true;	
}

void CPage1::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	
	UpdateData(TRUE);

	//三个临时变量
	CString strRed   = m_edtRedValue;
	CString strGreen = m_edtGreenValue;
	CString strBlue  = m_edtBlueValue;

	//三个临时值
	int valueRed   = atoi(strRed);
	int valueGreen = atoi(strGreen);
	int valueBlue  = atoi(strBlue);

	//设定三个滑竿位置
	m_sldRed.SetPos(valueRed);
	m_sldGreen.SetPos(valueGreen);
	m_sldBlue.SetPos(valueBlue);

	//三个控件的类型转换,是否有内存泄漏?
	CScrollBar *psliderRed   = (CScrollBar*)(&m_sldRed);
	CScrollBar *psliderGreen = (CScrollBar*)(&m_sldGreen);
	CScrollBar *psliderBlue  = (CScrollBar*)&m_sldBlue;

	//调用公用函数(函数不是我写的是否有什么bug不太清楚)
	OnHScroll(SB_THUMBTRACK, valueRed, psliderRed);
	OnHScroll(SB_THUMBTRACK, valueGreen, psliderGreen);
	OnHScroll(SB_THUMBTRACK, valueBlue, psliderBlue);
	
	CPropertyPage::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

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