📄 strmaxsumdlg.cpp
字号:
// StrMaxSumDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ArithmeticDemo.h"
#include "StrMaxSumDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStrMaxSumDlg dialog
CStrMaxSumDlg::CStrMaxSumDlg(CWnd* pParent /*=NULL*/)
: CDialog(CStrMaxSumDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CStrMaxSumDlg)
m_nInputDataEntries = 0;
//}}AFX_DATA_INIT
m_BKBrush.CreateSolidBrush(RGB(171,187,222));
}
void CStrMaxSumDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStrMaxSumDlg)
DDX_Text(pDX, IDC_INPUTDATAENTRIES, m_nInputDataEntries);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CStrMaxSumDlg, CDialog)
//{{AFX_MSG_MAP(CStrMaxSumDlg)
ON_BN_CLICKED(IDC_ANSWERBTN, OnAnswerbtn)
ON_BN_CLICKED(IDC_CLEANBTN, OnCleanbtn)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStrMaxSumDlg message handlers
void CStrMaxSumDlg::OnAnswerbtn()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString InputDataStr;
GetDlgItem(IDC_INPUTDATA)->GetWindowText(InputDataStr);
if(InputDataStr.IsEmpty()||m_nInputDataEntries<=0)
{
AfxMessageBox("请输入必要的数据");
GetDlgItem(IDC_ANSWERBTN)->EnableWindow(TRUE);
return;
}
CStringArray list;
GetElements(InputDataStr,m_nInputDataEntries,list);
int nType;
CString strResult;
CComboBox* pTypeList=(CComboBox*)GetDlgItem(IDC_TYPE);
nType=pTypeList->GetCurSel();
switch(nType)
{
case 0:
{
int* iList=new int[m_nInputDataEntries];
if(iList==NULL)
{
GetDlgItem(IDC_ANSWERBTN)->EnableWindow(TRUE);
AfxMessageBox("分配内存失败");
return;
}
int MaxSum=0,b=0;
for(int i=0;i<list.GetSize();i++)
{
iList[i]=atoi(list.GetAt(i));
}
for(int j=0;j<list.GetSize();j++)
{
if(b>0) b+=iList[j];
else b=iList[j];
if(b>MaxSum) MaxSum=b;
}
strResult.Format("%d",MaxSum);
}
break;
case 1:
{
double* dList=new double[m_nInputDataEntries];
if(dList==NULL)
{
GetDlgItem(IDC_ANSWERBTN)->EnableWindow(TRUE);
AfxMessageBox("分配内存失败");
return;
}
double MaxSum=0,b=0;
for(int i=0;i<list.GetSize();i++)
{
dList[i]=atof(list.GetAt(i));
if(b>0) b+=dList[i];
else b=dList[i];
if(b>MaxSum) MaxSum=b;
}
strResult.Format("%f",MaxSum);
}
break;
}
GetDlgItem(IDC_MAXSUM)->SetWindowText(strResult);
}
void CStrMaxSumDlg::OnCleanbtn()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_INPUTDATAENTRIES)->SetWindowText("");
GetDlgItem(IDC_INPUTDATA)->SetWindowText("");
GetDlgItem(IDC_MAXSUM)->SetWindowText("");
GetDlgItem(IDC_TYPE)->SetWindowText("");
}
BOOL CStrMaxSumDlg::OnInitDialog()
{
CDialog::OnInitDialog();
((CComboBox*)GetDlgItem(IDC_TYPE))->AddString("int");
((CComboBox*)GetDlgItem(IDC_TYPE))->AddString("double");
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CStrMaxSumDlg::GetElements(CString str, int nSize, CStringArray &list)
{
str.TrimLeft();
str.TrimRight();
list.RemoveAll();
list.SetSize(nSize);
for(int i=0;i<nSize;i++)
{
list.SetAt(i,'0');
}
int nIndex;
int nTotalNum=0;
CString strTemp;
while(str.GetLength()>0&&nTotalNum<m_nInputDataEntries)
{
nIndex=str.Find(' ');
if(nIndex!=-1)
{
strTemp=str.Left(nIndex);
list.SetAt(nTotalNum,strTemp);
int m=str.GetLength();
int n=strTemp.GetLength();
str=str.Right(m-n);
str.TrimLeft();
nTotalNum++;
}
else
{
list.SetAt(nTotalNum,str);
str.Empty();
nTotalNum++;
}
}
}
HBRUSH CStrMaxSumDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_DLG)
return (HBRUSH)m_BKBrush.GetSafeHandle();
// TODO: Return a different brush if the default is not desired
return hbr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -