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

📄 startdlg.cpp

📁 好用的键盘超人源代码
💻 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 = 4;
		  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 + -