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

📄 props.cpp

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

#include "stdafx.h"
#include "SetColorSty.h"
#include "Props.h"

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

/////////////////////////////////////////////////////////////////////////////
// CProps property page

IMPLEMENT_DYNCREATE(CProps, CPropertyPage)

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

CProps::~CProps()
{
}

void CProps::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CProps)
	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_RED, m_sldRed);
	DDX_Control(pDX, IDC_SLIDER_GREEN, m_sldGreen);
	DDX_Control(pDX, IDC_SLIDER_BLUE, m_sldBlue);
	DDX_Control(pDX, IDC_LIST2, m_styec);
	DDX_Text(pDX, IDC_EDIT_BLUE, m_edtBlueValue);
	DDX_Text(pDX, IDC_EDIT_GREEN, m_edtGreenValue);
	DDX_Text(pDX, IDC_EDIT_RED, m_edtRedValue);
	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_LBString(pDX, IDC_LIST1, m_stye);
	DDX_LBString(pDX, IDC_LIST2, m_stye1);
	DDX_Text(pDX, IDC_EDIT1, m_count);
	//}}AFX_DATA_MAP
}


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

	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CProps message handlers

void CProps::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 CProps::OnButtonAdd() 
{
	// TODO: Add your control notification handler code here
	if(TRUE==m_selChange)
	{
		int index;
		index=((CListBox* )GetDlgItem(IDC_LIST1))->GetCaretIndex();
		List[1][::count[1]++]=index;
		UpdateData();
		((CListBox* )GetDlgItem(IDC_LIST2))->AddString(m_stye);	
	}
	else
	{
		MessageBox("请选择要添加的项!!");
	}
}

void CProps::OnButtonRemove() 
{
	// TODO: Add your control notification handler code here
	int index;
	UpdateData();
	index=((CListBox* )GetDlgItem(IDC_LIST2))->GetCaretIndex();
	for(int i=index;i<::count[1];i++)
	{
		List[1][i]=List[1][i+1];
	}
	::count[1]--;
	((CListBox* )GetDlgItem(IDC_LIST2))->DeleteString(index);
}

void CProps::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);

}

BOOL CProps::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	CClientDC dc(this);
	m_lstIndex=0;

	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);

   
	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("单色变幻");

	SetTimer(1, 1000, 0);

     for(int i=0;i<count[1];i++)
	{
		SetList(List[1][i]);
	}
	

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

void CProps::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("渐变");
		break ;

	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 CProps::OnDblclkList1() 
{
	// TODO: Add your control notification handler code here
		int index;
	index=((CListBox* )GetDlgItem(IDC_LIST1))->GetCaretIndex();
    List[1][::count[1]++]=index;
	UpdateData();
    ((CListBox* )GetDlgItem(IDC_LIST2))->AddString(m_stye);		
}

void CProps::OnDblclkList2() 
{
	// TODO: Add your control notification handler code here
	int index;
	UpdateData();
	index=((CListBox* )GetDlgItem(IDC_LIST2))->GetCaretIndex();
	for(int i=index;i<::count[1];i++)
	{
		List[1][i]=List[1][i+1];
	}
	::count[1]--;
	((CListBox* )GetDlgItem(IDC_LIST2))->DeleteString(index);
}

void CProps::OnSelchangeList2() 
{
	// 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 CProps::OnSelchangeList1() 
{
	// TODO: Add your control notification handler code here
	m_selChange=true;
}

void CProps::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 + -