?? props.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 + -