📄 startdlg.cpp
字号:
// StartDlg.cpp : implementation file
//
#include "stdafx.h"
#include "rain.h"
#include "StartDlg.h"
#include "raincom.h"
#include "raindoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CRainDoc *PDocument;
extern int InitSocket;
/////////////////////////////////////////////////////////////////////////////
// CStartDlg dialog
CStartDlg::CStartDlg(CWnd* pParent)
: CDialog(CStartDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CStartDlg)
m_localUsrName=PDocument->localUsrName;
m_fileName=PDocument->fileName;
//}}AFX_DATA_INIT
m_rainType=PDocument->rainType;
m_rainSource=PDocument->rainSource;
m_rainLevel=PDocument->rainLevel;
m_stepTime =PDocument-> stepTime;
m_stepBetweenStr = PDocument->stepBetweenStr;
m_maxStrlen = PDocument->maxStrlen;
m_allStr= PDocument->allStr;
setLevelVaule(m_rainLevel);
}
void CStartDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStartDlg)
//DDX_Control(pDX, IDC_SPIN_WI, m_spin_WI);
//DDX_Control(pDX, IDC_SPIN_RTW, m_spin_RTW);
//DDX_Control(pDX, IDC_SPIN_RMWL, m_spin_RMWL);
//DDX_Control(pDX, IDC_SPIN_DT, m_spin_DT);
DDX_Control(pDX, IDC_COMBO, m_combox);
DDX_Text(pDX, IDC_EDIT_WYN, m_localUsrName);
DDV_MaxChars(pDX, m_localUsrName, MAX_NAME_LEN);
DDX_Text(pDX, IDC_EDIT_DT, m_stepTime);
DDX_Text(pDX, IDC_EDIT_WI, m_stepBetweenStr);
DDX_Text(pDX, IDC_EDIT_RMWL, m_maxStrlen);
DDX_Text(pDX, IDC_EDIT_RTW, m_allStr);
DDX_Text(pDX, IDC_EDIT_WFF, m_fileName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStartDlg, CDialog)
//{{AFX_MSG_MAP(CStartDlg)
ON_BN_CLICKED(IDC_RADIO_SP, OnRadioSp)
ON_BN_CLICKED(IDC_RADIO_MPC, OnRadioMpc)
ON_BN_CLICKED(IDC_RADIO_MPS, OnRadioMps)
ON_BN_CLICKED(IDC_BUTTON_WFF, OnButtonWff)
ON_CBN_SELENDOK(IDC_COMBO, OnSelendokCombo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CStartDlg::enableRainLevel(int flag)
{
GetDlgItem(IDC_STATIC_RL)->EnableWindow(0);
GetDlgItem(IDC_COMBO)->EnableWindow(0);
GetDlgItem(IDC_EDIT_WFF)->EnableWindow(0);
GetDlgItem(IDC_BUTTON_WFF)->EnableWindow(0);
GetDlgItem(IDC_EDIT_DT)->EnableWindow(0);
GetDlgItem(IDC_STATIC_DT)->EnableWindow(0);
//GetDlgItem(IDC_SPIN_DT)->EnableWindow(0);
GetDlgItem(IDC_EDIT_WI)->EnableWindow(0);
GetDlgItem(IDC_STATIC_WI)->EnableWindow(0);
//GetDlgItem(IDC_SPIN_WI)->EnableWindow(0);
GetDlgItem(IDC_EDIT_RMWL)->EnableWindow(0);
GetDlgItem(IDC_STATIC_RMWL)->EnableWindow(0);
//GetDlgItem(IDC_SPIN_RMWL)->EnableWindow(0);
GetDlgItem(IDC_EDIT_RTW)->EnableWindow(0);
GetDlgItem(IDC_STATIC_RTW)->EnableWindow(0);
//GetDlgItem(IDC_SPIN_RTW)->EnableWindow(0);
if(flag==0)
{
return;
}
if(flag==1)
{
GetDlgItem(IDC_STATIC_RL)->EnableWindow(1);
GetDlgItem(IDC_COMBO)->EnableWindow(1);
return;
}
if(flag==2)
{
GetDlgItem(IDC_STATIC_RL)->EnableWindow(1);
GetDlgItem(IDC_COMBO)->EnableWindow(1);
GetDlgItem(IDC_EDIT_WFF)->EnableWindow(1);
GetDlgItem(IDC_BUTTON_WFF)->EnableWindow(1);
return;
}
if(flag==3)
{
GetDlgItem(IDC_STATIC_RL)->EnableWindow(1);
GetDlgItem(IDC_COMBO)->EnableWindow(1);
GetDlgItem(IDC_EDIT_DT)->EnableWindow(1);
GetDlgItem(IDC_STATIC_DT)->EnableWindow(1);
//GetDlgItem(IDC_SPIN_DT)->EnableWindow(1);
GetDlgItem(IDC_EDIT_WI)->EnableWindow(1);
GetDlgItem(IDC_STATIC_WI)->EnableWindow(1);
//GetDlgItem(IDC_SPIN_WI)->EnableWindow(1);
GetDlgItem(IDC_EDIT_RMWL)->EnableWindow(1);
GetDlgItem(IDC_STATIC_RMWL)->EnableWindow(1);
//GetDlgItem(IDC_SPIN_RMWL)->EnableWindow(1);
GetDlgItem(IDC_EDIT_RTW)->EnableWindow(1);
GetDlgItem(IDC_STATIC_RTW)->EnableWindow(1);
//GetDlgItem(IDC_SPIN_RTW)->EnableWindow(1);
return;
}
if(flag==4)
{
GetDlgItem(IDC_STATIC_RL)->EnableWindow(1);
GetDlgItem(IDC_COMBO)->EnableWindow(1);
GetDlgItem(IDC_EDIT_WFF)->EnableWindow(1);
GetDlgItem(IDC_BUTTON_WFF)->EnableWindow(1);
GetDlgItem(IDC_EDIT_DT)->EnableWindow(1);
GetDlgItem(IDC_STATIC_DT)->EnableWindow(1);
//GetDlgItem(IDC_SPIN_DT)->EnableWindow(1);
GetDlgItem(IDC_EDIT_WI)->EnableWindow(1);
GetDlgItem(IDC_STATIC_WI)->EnableWindow(1);
//GetDlgItem(IDC_SPIN_WI)->EnableWindow(1);
return;
}
}
/////////////////////////////////////////////////////////////////////////////
// CStartDlg message handlers
void CStartDlg::OnRadioSp()
{
// TODO: Add your control notification handler code here
m_rainType=RT_LOCAL;
switch(m_rainLevel)
{
case RL_0:
case RL_1:
case RL_2:
case RL_3:
case RL_4:
case RL_5:
enableRainLevel(1);
break;
case RL_6:
case RL_7:
case RL_8:
enableRainLevel(2);
break;
case RL_9:
enableRainLevel(3);
break;
case RL_10:
enableRainLevel(4);
break;
}
}
void CStartDlg::OnRadioMpc()
{
// TODO: Add your control notification handler code here
m_rainType=RT_CLIENT;
enableRainLevel(0);
}
void CStartDlg::OnRadioMps()
{
// TODO: Add your control notification handler code here
m_rainType=RT_SERVER;
switch(m_rainLevel)
{
case RL_0:
case RL_1:
case RL_2:
case RL_3:
case RL_4:
case RL_5:
enableRainLevel(1);
break;
case RL_6:
case RL_7:
case RL_8:
enableRainLevel(2);
break;
case RL_9:
enableRainLevel(3);
break;
case RL_10:
enableRainLevel(4);
break;
}
}
BOOL CStartDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CButton *radio;
switch(m_rainLevel)
{
case RL_0:
case RL_1:
case RL_2:
case RL_3:
case RL_4:
case RL_5:
enableRainLevel(1);
break;
case RL_6:
case RL_7:
case RL_8:
enableRainLevel(2);
break;
case RL_9:
enableRainLevel(3);
break;
case RL_10:
enableRainLevel(4);
break;
}
switch(m_rainType)
{
case RT_LOCAL:
radio=(CButton *)GetDlgItem(IDC_RADIO_SP);
radio->SetCheck(TRUE);
break;
case RT_CLIENT:
radio=(CButton *)GetDlgItem(IDC_RADIO_MPC);
radio->SetCheck(TRUE);
enableRainLevel(0);
break;
case RT_SERVER:
radio=(CButton *)GetDlgItem(IDC_RADIO_MPS);
radio->SetCheck(TRUE);
break;
}
m_combox.AddString("Level 0 - random single char");
m_combox.AddString("Level 1 - random single char");
m_combox.AddString("Level 2 - random single char");
m_combox.AddString("Level 3 - random multi char");
m_combox.AddString("Level 4 - random multi char");
m_combox.AddString("Level 5 - random multi char");
m_combox.AddString("Level 6 - words from file");
m_combox.AddString("Level 7 - words from file");
m_combox.AddString("Level 8 - words from file");
m_combox.AddString("Customize random char ");
m_combox.AddString("Customize words from file ");
m_combox.SetCurSel(m_rainLevel);
//if sock init fail then can't be rain client or rain server
if(!InitSocket)
{
GetDlgItem(IDC_RADIO_MPC)->EnableWindow(0);
GetDlgItem(IDC_RADIO_MPS)->EnableWindow(0);
}
/* m_spin_RTW.SetBuddy(GetDlgItem(IDC_EDIT_RTW));
m_spin_RMWL.SetBuddy(GetDlgItem(IDC_EDIT_RMWL));
m_spin_DT.SetBuddy(GetDlgItem(IDC_EDIT_DT));
m_spin_WI.SetBuddy(GetDlgItem(IDC_EDIT_WI));
m_spin_RTW.SetRange(1,1000);
m_spin_RMWL.SetRange(1,RAIN_X-STATE_WIDE);
m_spin_DT.SetRange(1,1000);
m_spin_WI.SetRange(1,RAIN_Y/2);*/
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CStartDlg::setLevelVaule(int level)
{
switch(level)
{
case RL_0:
m_stepTime = 350 ;
m_stepBetweenStr = 3 ;
m_maxStrlen = 1;
m_allStr= 50;
m_rainSource=RS_RANDOM;
break;
case RL_1:
m_stepTime = 250;
m_stepBetweenStr = 2;
m_maxStrlen = 1;
m_allStr=50;
m_rainSource=RS_RANDOM;
break;
case RL_2:
m_stepTime = 200;
m_stepBetweenStr = 1;
m_maxStrlen = 1;
m_allStr=50;
m_rainSource=RS_RANDOM;
break;
case RL_3:
m_stepTime = 300;
m_stepBetweenStr = 3;
m_maxStrlen = 5;
m_allStr=50;
m_rainSource=RS_RANDOM;
break;
case RL_4:
m_stepTime = 300;
m_stepBetweenStr = 2;
m_maxStrlen = 5;
m_allStr=50;
m_rainSource=RS_RANDOM;
break;
case RL_5:
m_stepTime = 250;
m_stepBetweenStr = 2;
m_maxStrlen = 6;
m_allStr=50;
m_rainSource=RS_RANDOM;
break;
case RL_6:
m_stepTime = 400;
m_stepBetweenStr = 5;
m_rainSource=RS_FILE;
break;
case RL_7:
m_stepTime = 300;
m_stepBetweenStr = 4;
m_rainSource=RS_FILE;
break;
case RL_8:
m_stepTime = 250;
m_stepBetweenStr = 2;
m_rainSource=RS_FILE;
break;
case RL_9:
m_rainSource=RS_RANDOM;
break;
case RL_10:
m_rainSource=RS_FILE;
break;
}
m_rainLevel=level;
}
void CStartDlg::OnOK()
{
// TODO: Add extra validation here
//char temp[100];
CFile file;
CString temp;
UpdateData(TRUE);
if (m_localUsrName=="")
{
MessageBox("Please enter your name !","Rain",MB_OK|MB_ICONWARNING);
return;
}
if ((m_maxStrlen<1)||(m_maxStrlen>(RAIN_X-STATE_WIDE)))
{
temp.Format("Radom Max Length must between 1 and %d !",RAIN_X);
MessageBox(temp,"Rain",MB_OK|MB_ICONWARNING);
return;
}
if ((m_stepBetweenStr<1)||(m_stepBetweenStr>RAIN_Y/2))
{
temp.Format("Word Interval must between 1 and %d !",RAIN_Y/2);
MessageBox(temp,"Rain",MB_OK|MB_ICONWARNING);
return;
}
if((m_rainSource==RS_FILE)&&(m_rainType!=RT_CLIENT))
{
if(m_fileName=="")
{
MessageBox("Please select a file as rain source !",
"Rain",MB_OK|MB_ICONWARNING);
return;
}
if(!file.Open(m_fileName,CFile::modeRead,NULL))
{
temp="Unable to open file '";
temp+=m_fileName;
temp+="' !";
MessageBox(temp,"Rain",MB_OK|MB_ICONWARNING);
return ;
}
file.Close();
}
CDialog::OnOK();
}
void CStartDlg::OnButtonWff()
{
// TODO: Add your control notification handler code here
CFileDialog fileDlg(TRUE,
"*.txt",
NULL,
OFN_HIDEREADONLY ,
"Text Files(*.txt)|*.txt|All Files(*.*)|*.*||",
this);
fileDlg.DoModal();
m_fileName=fileDlg.GetPathName();
UpdateData(FALSE);
}
void CStartDlg::OnSelendokCombo()
{
// TODO: Add your control notification handler code here
int rainLevel;
UpdateData(TRUE);
rainLevel=m_combox.GetCurSel();
if(rainLevel==RL_9)
{
m_stepTime = 300;
m_stepBetweenStr = 3;
m_maxStrlen = 4;
m_allStr=50;
}
if(rainLevel==RL_10)
{
m_stepTime = 400;
m_stepBetweenStr = 5;
}
setLevelVaule(rainLevel);
UpdateData(FALSE);
switch(rainLevel)
{
case RL_0:
case RL_1:
case RL_2:
case RL_3:
case RL_4:
case RL_5:
enableRainLevel(1);
break;
case RL_6:
case RL_7:
case RL_8:
enableRainLevel(2);
break;
case RL_9:
enableRainLevel(3);
break;
case RL_10:
enableRainLevel(4);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -