dialogcolorsetup.cpp
来自「一个俄罗斯方块的vc源代码」· C++ 代码 · 共 282 行
CPP
282 行
// DialogColorSetup.cpp : implementation file
//
#include "stdafx.h"
#include "Russia.h"
#include "DialogColorSetup.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static const TCHAR szSection[] = _T("Settings");
static const TCHAR clrCube[] = _T("方块颜色");
static const TCHAR clrDeclareCube[] = _T("声明区域的方块颜色");
static const TCHAR clrMaxRect[] = _T("最大区域颜色");
static const TCHAR clrDeclareRect[] = _T("声明区域颜色");
static const TCHAR clrDiamondsRect[] = _T("运行区域颜色");
static const TCHAR clrLine[] = _T("方格线颜色");
static const TCHAR clrDeclareFont[] = _T("声明区域的字体颜色");
static const TCHAR clrGameOverFont[] = _T("游戏结束字体的颜色");
static const TCHAR bRandomCubeColor[] = _T("随机产生运动方块颜色");
/////////////////////////////////////////////////////////////////////////////
// CDialogColorSetup dialog
CDialogColorSetup::CDialogColorSetup(CWnd* pParent /*=NULL*/)
: CDialog(CDialogColorSetup::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialogColorSetup)
m_bRandomCubeColor = FALSE;
m_FirstLeft = _T("");
//}}AFX_DATA_INIT
m_clrCube=RGB(0,0,0);//方块颜色
m_clrDeclareCube=RGB(0,0,0);//声明区域的方块颜色
m_clrMaxRect=RGB(0,0,0);//最大区域颜色
m_clrDeclareRect=RGB(0,0,0);//声明区域颜色
m_clrDiamondsRect=RGB(0,0,0);//运行区域颜色
m_clrLine=RGB(0,0,0);//方格线颜色
m_clrDeclareFont=RGB(0,0,0); //声明区域的字体颜色
m_clrGameOverFont=RGB(0,0,0); //游戏结束字体的颜色
}
void CDialogColorSetup::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogColorSetup)
DDX_Control(pDX, IDC_TAB1, m_TabSetup);
DDX_Control(pDX, IDC_COMBO_COLOR, m_ComboColor);
DDX_Check(pDX, IDC_CHECK1, m_bRandomCubeColor);
DDX_Text(pDX, IDC_EDIT1, m_FirstLeft);
DDV_MaxChars(pDX, m_FirstLeft, 1);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialogColorSetup, CDialog)
//{{AFX_MSG_MAP(CDialogColorSetup)
ON_BN_CLICKED(IDC_BUTTON_CHANGE, OnButtonChange)
ON_WM_SHOWWINDOW()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
ON_BN_CLICKED(IDC_BUTTON_DEFAULT, OnButtonDefault)
ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogColorSetup message handlers
void CDialogColorSetup::OnButtonChange()
{
// TODO: Add your control notification handler code here
//m_ComboColor.SetSelectedColorValue(RGB(255,255,255));
CColorDialog dlg;
dlg.m_cc.Flags|=CC_RGBINIT;//CC_PREVENTFULLOPEN|CC_RGBINIT
dlg.m_cc.rgbResult=m_ComboColor.GetSelectedColorValue();
if(dlg.DoModal()==IDOK)
{
m_ComboColor.ChangeColor(dlg.GetColor());
Invalidate(true);
}
}
void CDialogColorSetup::OnOK()
{
// TODO: Add extra validation here
//颜色设置
UpdateData(TRUE);
m_clrCube=m_ComboColor.GetColorValue(0);//方块颜色
m_clrDeclareCube=m_ComboColor.GetColorValue(1);//声明区域的方块颜色
m_clrMaxRect=m_ComboColor.GetColorValue(2);//最大区域颜色
m_clrDeclareRect=m_ComboColor.GetColorValue(3);//声明区域颜色
m_clrDiamondsRect=m_ComboColor.GetColorValue(4);//运行区域颜色
m_clrLine=m_ComboColor.GetColorValue(5);//方格线颜色
m_clrDeclareFont=m_ComboColor.GetColorValue(6); //声明区域的字体颜色
m_clrGameOverFont=m_ComboColor.GetColorValue(7); //游戏结束字体的颜色
CWinApp* pApp = AfxGetApp();
pApp->WriteProfileInt(szSection, clrCube, m_clrCube);
pApp->WriteProfileInt(szSection, clrDeclareCube, m_clrDeclareCube);
pApp->WriteProfileInt(szSection,clrMaxRect ,m_clrMaxRect );
pApp->WriteProfileInt(szSection,clrDeclareRect , m_clrDeclareRect);
pApp->WriteProfileInt(szSection,clrDiamondsRect , m_clrDiamondsRect);
pApp->WriteProfileInt(szSection, clrLine, m_clrLine);
pApp->WriteProfileInt(szSection, clrDeclareFont,m_clrDeclareFont );
pApp->WriteProfileInt(szSection,clrGameOverFont , m_clrGameOverFont);
pApp->WriteProfileInt(szSection, bRandomCubeColor,m_bRandomCubeColor );
CDialog::OnOK();
}
void CDialogColorSetup::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
UpdateData(FALSE);//让CHECK控件更新
// TODO: Add your message handler code here
m_ComboColor.ChangeColor(0,m_clrCube);
m_ComboColor.ChangeColor(1,m_clrDeclareCube);
m_ComboColor.ChangeColor(2,m_clrMaxRect);
m_ComboColor.ChangeColor(3,m_clrDeclareRect);
m_ComboColor.ChangeColor(4,m_clrDiamondsRect);
m_ComboColor.ChangeColor(5,m_clrLine);
m_ComboColor.ChangeColor(6,m_clrDeclareFont);
m_ComboColor.ChangeColor(7,m_clrGameOverFont);
Invalidate(FALSE);
}
BOOL CDialogColorSetup::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
ButtonOK.SubclassDlgItem(IDOK,this);
ButtonOK.SetIcon(IDI_ICON_OK,IDI_ICON_OK);
ButtonCancel.SubclassDlgItem(IDCANCEL,this);
ButtonCancel.SetIcon(IDI_ICON_CANCEL,IDI_ICON_CANCEL);
TC_ITEM* m_pTCItem;
m_pTCItem=new TC_ITEM;
m_pTCItem->mask=TCIF_TEXT;
m_pTCItem->pszText="颜色设置";
m_TabSetup.InsertItem(0,m_pTCItem);
m_pTCItem->pszText="键盘控制设置";
m_TabSetup.InsertItem(1,m_pTCItem);
//界面开始时显示颜色设置
GetDlgItem(IDC_COMBO_COLOR)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_CHECK1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_CHANGE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT4)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT5)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT6)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT7)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT8)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC6)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC7)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC8)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC9)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDialogColorSetup::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(m_TabSetup.GetCurSel()==0)//颜色设置
{
GetDlgItem(IDC_COMBO_COLOR)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_CHECK1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_CHANGE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT4)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT5)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT6)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT7)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT8)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC6)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC7)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC8)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC9)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE);
}
else //键盘控制设置
{
GetDlgItem(IDC_COMBO_COLOR)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_CHANGE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT4)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT5)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT6)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT7)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT8)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC4)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC5)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC6)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC7)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC8)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC9)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC10)->ShowWindow(SW_SHOW);
}
*pResult = 0;
}
void CDialogColorSetup::OnButtonDefault()
{
m_bRandomCubeColor=TRUE; //运动方块颜色随即产生
UpdateData(FALSE);
m_clrCube=RGB(255,255,200);//运动方块颜色
m_clrMaxRect=RGB(64,128,128); //最大区域颜色
m_clrDeclareRect=RGB(190,190,190); //声明区域颜色
m_clrDiamondsRect=RGB(57,83,60); //运行区域颜色
m_clrLine=RGB(45,100,50); //方格线颜色
m_clrDeclareCube=RGB(0,0,0); //声明区域的方块颜色
m_clrDeclareFont=RGB(0,0,0); //声明区域的字体颜色
m_clrGameOverFont=RGB(20,20,255); //游戏结束字体的颜色
//更新颜色
m_ComboColor.ChangeColor(0,m_clrCube);
m_ComboColor.ChangeColor(1,m_clrDeclareCube);
m_ComboColor.ChangeColor(2,m_clrMaxRect);
m_ComboColor.ChangeColor(3,m_clrDeclareRect);
m_ComboColor.ChangeColor(4,m_clrDiamondsRect);
m_ComboColor.ChangeColor(5,m_clrLine);
m_ComboColor.ChangeColor(6,m_clrDeclareFont);
m_ComboColor.ChangeColor(7,m_clrGameOverFont);
Invalidate(FALSE);
}
void CDialogColorSetup::OnChangeEdit1()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?