📄 statdlg.cpp
字号:
// StatDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DoubleColorBall.h"
#include "StatDlg.h"
#include "excel9.h"
#include "FileDialogST.h"
#include "CommDef.h"
#include "CommonTool.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStatDlg dialog
// 初始化变量
CStatDlg::CStatDlg(CWnd* pParent /*=NULL*/)
: CDialog(CStatDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CStatDlg)
m_csIssue = _T("");
m_csRedBall1 = _T(""); // 红球1
m_csRedBall2 = _T(""); // 红球2
m_csRedBall3 = _T(""); // 红球3
m_csRedBall4 = _T(""); // 红球4
m_csRedBall5 = _T(""); // 红球5
m_csRedBall6 = _T(""); // 红球6
m_csFrom = _T(""); // 期号开始
m_csTo = _T(""); // 期号结束
m_csRedBlueBallIni = _T("");
m_csBlueBall = _T(""); // 蓝球1
//}}AFX_DATA_INIT
m_csRedBallTimes = _T("");
m_csBlueBallTimes = _T("");
m_csRedBallFlag = _T("");
m_csBlueBallFlag = _T("");
m_bIsAllStat = false;
m_csarSpecifiedRedBlueBall.RemoveAll();
}
void CStatDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStatDlg)
DDX_Control(pDX, IDC_CHECK_RED_BLUE_BALL, m_chkRedBlueBall);
DDX_Control(pDX, IDC_COMBO_BLUE_BALL, m_cmbBlueBall);
DDX_Control(pDX, IDC_COMBO_RED_BALL, m_cmbRedBall);
DDX_Text(pDX, IDC_EDIT_ISSUE, m_csIssue);
DDX_Text(pDX, IDC_EDIT_RED_BALL1, m_csRedBall1);
DDX_Text(pDX, IDC_EDIT_RED_BALL2, m_csRedBall2);
DDX_Text(pDX, IDC_EDIT_RED_BALL3, m_csRedBall3);
DDX_Text(pDX, IDC_EDIT_RED_BALL4, m_csRedBall4);
DDX_Text(pDX, IDC_EDIT_RED_BALL5, m_csRedBall5);
DDX_Text(pDX, IDC_EDIT_RED_BALL6, m_csRedBall6);
DDX_Text(pDX, IDC_EDIT_FROM, m_csFrom);
DDX_Text(pDX, IDC_EDIT_TO, m_csTo);
DDX_Text(pDX, IDC_EDIT_FILE, m_csRedBlueBallIni);
DDX_Text(pDX, IDC_EDIT_BLUE_BALL, m_csBlueBall);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStatDlg, CDialog)
//{{AFX_MSG_MAP(CStatDlg)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
ON_BN_CLICKED(IDC_BUTTON_SHOW_WIN_PRIZE, OnButtonShowWinPrize)
ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse)
ON_BN_CLICKED(IDC_BUTTON_STAT_SINGLE_RED_BALL, OnButtonStatSingleRedBall)
ON_BN_CLICKED(IDC_BUTTON_STAT_SINGLE_BLUE_BALL, OnButtonStatSingleBlueBall)
ON_BN_CLICKED(IDC_CHECK_RED_BLUE_BALL, OnCheckRedBlueBall)
ON_BN_CLICKED(IDC_BUTTON_STAT_SELECTED_RED_BLUE_BALL, OnButtonStatSelectedRedBlueBall)
ON_BN_CLICKED(IDC_BUTTON_STAT_ALL_BALL, OnButtonStatAllBall)
ON_BN_CLICKED(IDC_BUTTON_QUIT, OnButtonQuit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStatDlg message handlers
// 初始化对话框
BOOL CStatDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// 初始化工作目录
CFile file;
// 打开文件
if (!file.Open(".\\PathRedBlueBallIni.ini",CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate))
{
AfxMessageBox("File open fail!");
return false;
}
// 移动到文件头
file.SeekToBegin();
int nLen = file.GetLength();
// 读文件
TCHAR buffer[200];
buffer[0] = 0;
file.Read(buffer,nLen);
buffer[nLen ] = 0;
// 关闭文件
file.Close();
m_csRedBlueBallIni = buffer;
UpdateData(FALSE);
GetDlgItem( IDC_EDIT_FILE )->EnableWindow( FALSE );
// 添加33个红球和16个蓝球
for ( int i = 1; i < 34; i++ )
{
CString csTempRedBall = _T("");
csTempRedBall.Format( _T("%d"), i );
m_cmbRedBall.AddString( csTempRedBall );
}
//m_cmbRedBall.SetCurSel( 0 );
for ( int j = 1; j < 17; j++ )
{
CString csTempBlueBall = _T("");
csTempBlueBall.Format( _T("%d"), j );
m_cmbBlueBall.AddString( csTempBlueBall );
}
//m_cmbBlueBall.SetCurSel( 15 );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
// 保存开过奖的红球和蓝球到文件中
void CStatDlg::OnButtonSave()
{
// TODO: Add your control notification handler code here
// 检查期号
bool bIsValidIssue = CheckIssue();
if ( !bIsValidIssue )
{
return;
}
// 检查6个红球
bool bIsValidRedBall = CheckSixRedBall();
if ( !bIsValidRedBall )
{
return;
}
// 检查1个蓝球
bool bIsValidBlueBall = CheckOneBlueBall();
if ( !bIsValidBlueBall )
{
return;
}
// 开始保存
// 创建 MySaveFile 文件夹.
CFileFind finder;
BOOL bFindMySaveFolder = finder.FindFile( SAVE_FILE_FOLDER );
if ( !bFindMySaveFolder )
{
BOOL bSuccCreate = CreateDirectory( SAVE_FILE_FOLDER, NULL ) ;
if ( !bSuccCreate )
{
AfxMessageBox( _T("^_^ 创建文件夹失败!") );
return ;
}
}
// 打开RedBlueBall.ini文件.
if ( !myFile.Open( RED_BLUE_BALL_FILE_PATH, CFile::modeCreate|CFile::modeWrite|
CFile::typeText|CFile::modeNoTruncate, &Fe) )
{
AfxMessageBox( _T("^_^ 打开文件失败!") );
return;
}
myFile.SeekToEnd(); // 将文件句柄移到文件最后
CString csRedBlueBallInfo = m_csIssue;
csRedBlueBallInfo += _T("|");
csRedBlueBallInfo += m_csarRedBall.GetAt( 0 );
csRedBlueBallInfo += _T(",");
csRedBlueBallInfo += m_csarRedBall.GetAt( 1 );
csRedBlueBallInfo += _T(",");
csRedBlueBallInfo += m_csarRedBall.GetAt( 2 );
csRedBlueBallInfo += _T(",");
csRedBlueBallInfo += m_csarRedBall.GetAt( 3 );
csRedBlueBallInfo += _T(",");
csRedBlueBallInfo += m_csarRedBall.GetAt( 4 );
csRedBlueBallInfo += _T(",");
csRedBlueBallInfo += m_csarRedBall.GetAt( 5 );
csRedBlueBallInfo += _T("|");
csRedBlueBallInfo += m_csBlueBall;
csRedBlueBallInfo += _T("\r\n");
// 写文件
myFile.WriteString( csRedBlueBallInfo );
// 关闭文件
myFile.Close();
// 给出保存成功的信息
Sleep( 1500 );
AfxMessageBox( _T("^_^ 恭喜你,保存成功!") );
// 清空编辑框和数组
m_csIssue = _T("");
m_csRedBall1 = _T("");
m_csRedBall2 = _T("");
m_csRedBall3 = _T("");
m_csRedBall4 = _T("");
m_csRedBall5 = _T("");
m_csRedBall6 = _T("");
m_csBlueBall = _T("");
m_csarRedBall.RemoveAll();
UpdateData( FALSE );
}
// 显示开过奖的红蓝球信息
void CStatDlg::OnButtonShowWinPrize()
{
// TODO: Add your control notification handler code here
UpdateData();
// 检查开始期号和结束期号的有效性
if ( m_csFrom.IsEmpty() ) // 开始期号为空
{
AfxMessageBox( _T("起始期号不可以为空!") );
GetDlgItem( IDC_EDIT_FROM )->SetFocus();
return;
}
if ( m_csTo.IsEmpty() ) // 结束期号为空
{
AfxMessageBox( _T("中止期号不可以为空!") );
GetDlgItem( IDC_EDIT_TO )->SetFocus();
return;
}
CCommonTool::DeleteLeftRightSpaceFromCString( m_csFrom );
CCommonTool::DeleteLeftRightSpaceFromCString( m_csTo );
int nFrom = atoi( m_csFrom );
int nTo = atoi( m_csTo );
if ( nFrom > nTo ) // 开始期号大于结束期号
{
AfxMessageBox( _T("起始期号不能大于中止期号,请重新输入!") );
GetDlgItem( IDC_EDIT_FROM )->SetFocus();
m_csFrom = _T("");
m_csTo = _T("");
UpdateData( FALSE );
return;
}
// 检查用户输入的开奖起始期号和中止期号是否有效.
CStringArray csarIssue;
GetIssue( csarIssue );
bool IsValidIssue = CheckIssue( csarIssue, m_csFrom );
if ( !IsValidIssue )
{
AfxMessageBox( _T("你输入的开奖起始期号不存在!") );
m_csFrom = _T("");
UpdateData( FALSE );
GetDlgItem( IDC_EDIT_FROM )->SetFocus();
return;
}
IsValidIssue = CheckIssue( csarIssue, m_csTo );
if ( !IsValidIssue )
{
AfxMessageBox( _T("你输入的开奖中止期号不存在!") );
m_csTo = _T("");
UpdateData( FALSE );
GetDlgItem( IDC_EDIT_TO )->SetFocus();
return;
}
// 获得指定期号的红球和蓝球.
GetSpecifiedRedBlueBall(m_csFrom,
m_csTo,
m_csarSpecifiedRedBlueBall);
// 显示获奖信息.
CString csInfo = _T("");
for ( int i = 0; i < m_csarSpecifiedRedBlueBall.GetSize(); i++ )
{
csInfo += m_csarSpecifiedRedBlueBall.GetAt( i );
csInfo += _T("\r\n");
}
// 打开文件
CFile file;
if ( !file.Open( _T("c:\\WinPrizeRedBlueInfo.txt"),
CFile::modeReadWrite |
CFile::modeCreate |
CFile::modeNoTruncate) )
{
AfxMessageBox( _T("文件打开失败!" ));
return;
}
// 将文件句柄定位到文件头
file.SeekToBegin();
// 清空文件
file.SetLength( 0 );
// 写文件
file.Write( LPCTSTR(csInfo),csInfo.GetLength() );
// 关闭文件
file.Close();
m_csarSpecifiedRedBlueBall.RemoveAll();
csarIssue.RemoveAll();
myFile.Close();
// 在记事本中显示文件信息
WinExec( _T("notepad.exe c:\\WinPrizeRedBlueInfo.txt"), SW_MAXIMIZE );
}
// 浏览文件
void CStatDlg::OnButtonBrowse()
{
// TODO: Add your control notification handler code here
CFileDialogST dlg;
CString sStaticsDirectory;
int nRetValue;
nRetValue = dlg.SelectFolder(_T("请选择RedBlueBall.ini文件"),
RED_BLUE_BALL_FILE_PATH, 0x40|
BIF_RETURNFSANCESTORS|
BIF_RETURNONLYFSDIRS|
BIF_BROWSEINCLUDEFILES|
OFN_ALLOWMULTISELECT,
this);
if ( IDOK == nRetValue )
{
m_csRedBlueBallIni = dlg.GetSelectedFolder();
}
UpdateData(FALSE);
GetDlgItem( IDC_EDIT_FILE )->EnableWindow( FALSE );
// 把RedBlueBall.ini 目录写入到.ini file,
// 以便下次启动后编辑框中默认显示上次指定的目录。
CFile file;
CString csBuffer = m_csRedBlueBallIni;
CString csIniFile = _T(".\\PathRedBlueBallIni.ini");
// 打开文件
if(!file.Open(csIniFile,
CFile::modeReadWrite |
CFile::modeCreate |
CFile::modeNoTruncate))
{
AfxMessageBox(_T("文件打开失败!"));
return ;
}
// 把文件句柄移到文件头
file.SeekToBegin();
// 清空文件内容
file.SetLength( 0 );
// 写文件
file.Write(LPCTSTR(csBuffer),csBuffer.GetLength());
// 关闭文件
file.Close();
}
// 统计单个红球
void CStatDlg::OnButtonStatSingleRedBall()
{
// TODO: Add your control notification handler code here
int nIndex = m_cmbRedBall.GetCurSel();
if ( -1 == nIndex )
{
MessageBox( _T("^_^ 你还没有选择红球,请选择!"),
_T("友情提示"),
MB_ICONASTERISK );
return;
}
// 从RedBlueBallIni.ini文件中获得红球.
CStringArray csarRedBallString;
GetRedBallString(csarRedBallString);
// 获得所有红球
CStringArray csarRedBall;
GetAllRedBall( csarRedBallString, csarRedBall );
// 显示单个红球出现的次数.
CString csCurSelRedBall = _T("");
m_cmbRedBall.GetLBText( nIndex, csCurSelRedBall );
int nCurSelRedBall = atoi( csCurSelRedBall );
switch ( nCurSelRedBall )
{
case 1: // 红球1
GetSingleRedBallTimes( 1, csarRedBall );
break;
case 2: // 红球2
GetSingleRedBallTimes( 2, csarRedBall );
break;
case 3:
GetSingleRedBallTimes( 3, csarRedBall );
break;
case 4:
GetSingleRedBallTimes( 4, csarRedBall );
break;
case 5:
GetSingleRedBallTimes( 5, csarRedBall );
break;
case 6:
GetSingleRedBallTimes( 6, csarRedBall );
break;
case 7:
GetSingleRedBallTimes( 7, csarRedBall );
break;
case 8:
GetSingleRedBallTimes( 8, csarRedBall );
break;
case 9:
GetSingleRedBallTimes( 9, csarRedBall );
break;
case 10:
GetSingleRedBallTimes( 10, csarRedBall );
break;
case 11:
GetSingleRedBallTimes( 11, csarRedBall );
break;
case 12:
GetSingleRedBallTimes( 12, csarRedBall );
break;
case 13:
GetSingleRedBallTimes( 13, csarRedBall );
break;
case 14:
GetSingleRedBallTimes( 14, csarRedBall );
break;
case 15:
GetSingleRedBallTimes( 15, csarRedBall );
break;
case 16:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -