fcinputdlg.cpp

来自「编译原理的一个课程设计」· C++ 代码 · 共 108 行

CPP
108
字号
// FCInputDlg.cpp : implementation file
//

#include "stdafx.h"
#include "FC.h"
#include "FCInputDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFCInputDlg dialog

CFCInputDlg::CFCInputDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFCInputDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFCInputDlg)
	m_Input = _T("");
	m_Message = _T("");
	//}}AFX_DATA_INIT
}


void CFCInputDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFCInputDlg)
	DDX_Text(pDX, IDC_INPUT, m_Input);
	DDX_Text(pDX, IDC_STATIC_MESSAGE, m_Message);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFCInputDlg, CDialog)
	//{{AFX_MSG_MAP(CFCInputDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFCInputDlg message handlers

int CFCInputDlg::InputInt(void)
{
	m_bInputInt=TRUE;
	m_Message="请输入一个整数:";
	m_Input="";
	DoModal();
	return atoi(m_Input);
}

double CFCInputDlg::InputDouble(void)
{
	m_bInputInt=FALSE;
	m_Message="请输入一个实数:";
	m_Input="";
	DoModal();
	return atof(m_Input);
}

void CFCInputDlg::OnCancel() 
{
	UpdateData(TRUE);
	int i,length=m_Input.GetLength();
	int signal=1;
	for(i=0;i<length && (m_Input[i]==' ' || m_Input[i]=='\t');i++);//跳过前导空格
	if(m_bInputInt)
	{
		if(i!=length &&(m_Input[i]=='+' || m_Input[i]=='-'))
			i++;
		if(i!=length)
		{
			for(;i<length && m_Input[i]>='0' && m_Input[i]<='9';i++);
			for(;i<length && (m_Input[i]==' ' || m_Input[i]=='\t');i++);//跳过后跟空格
			if(i==length)
			{
				CDialog::OnCancel();
				return;
			}
		}
		MessageBox("请输入一个整数!","FC 2.2",MB_OK|MB_ICONEXCLAMATION);
		GetDlgItem(IDC_INPUT)->SetFocus();
		((CEdit*)GetDlgItem(IDC_INPUT))->SetSel(0,-1);
	}
	else
	{
		if(i!=length &&(m_Input[i]=='+' || m_Input[i]=='-'))
			i++;
		if(i!=length)
		{
			for(;i<length && m_Input[i]>='0' && m_Input[i]<='9';i++);
			if(i<length && m_Input[i]=='.')
				for(i++;i<length && m_Input[i]>='0' && m_Input[i]<='9';i++);
			for(;i<length && (m_Input[i]==' ' || m_Input[i]=='\t');i++);//跳过后跟空格
			if(i==length)
			{
				CDialog::OnCancel();
				return;
			}
		}
		MessageBox("请输入一个实数!","FC 2.2",MB_OK|MB_ICONEXCLAMATION);
		GetDlgItem(IDC_INPUT)->SetFocus();
		((CEdit*)GetDlgItem(IDC_INPUT))->SetSel(0,-1);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?