c++ 错误处理程序

void CErrorOperateDlg::OnCbnSelchangeComboOperation1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	if (m_operation1==0)
	{
		GetDlgItem(IDC_BTN_OPERATION1)->SetWindowText(_T("设置"));
		GetDlgItem(IDC_STATIC_ERRORCODE)->ShowWindow(SW_SHOW);
		GetDlgItem(IDC_EDIT_ERRORCODE)->ShowWindow(SW_SHOW);
	}
	else
	{
		GetDlgItem(IDC_BTN_OPERATION1)->SetWindowText(_T("获取"));
		GetDlgItem(IDC_STATIC_ERRORCODE)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_EDIT_ERRORCODE)->ShowWindow(SW_HIDE);
	}
}


void CErrorOperateDlg::ExitFunc()
{
	// TODO: 在此处添加实现代码.
	AfxMessageBox(_T("被除数不能为0"));
}


void CErrorOperateDlg::OnBnClickedBtnOperation1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	DWORD dwErrorCode = 0;
	if (m_operation1==0)
	{
		SetLastError(m_dwErrorCode);
		dwErrorCode = GetLastError();
	}
	else if (m_operation1 == 1)
	{
		if (!CreateDirectory(_T("c:\\"),0))
		{
			dwErrorCode = GetLastError();
		}
	}
	LPVOID lpMsgbuf;
	FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER
		| FORMAT_MESSAGE_FROM_SYSTEM,
		NULL,
		dwErrorCode,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPTSTR)&lpMsgbuf,
		0,
		NULL);
	CString strErrorMsg = _T("");
	strErrorMsg.Format(_T("ErrorCode=%d,ErrorMsg=%s"), dwErrorCode, lpMsgbuf);
	LocalFree(lpMsgbuf);
	GetDlgItem(IDC_EDIT_ERRORMSG1)->SetWindowTextW(strErrorMsg);


}



void CErrorOperateDlg::OnBnClickedBtnOperation2()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);
	switch (m_operation2)
	{
	case 0:
		assert(m_nDividend != 0);
		break;
	case 1:
		if (m_nDividend==0)
		{
			exit(EXIT_FAILURE);
		}
		break;
	case 2:
		if (m_nDividend == 0)
		{
			abort();
		}
		break;
	case 3:
		if (m_nDividend == 0)
		{
			atexit(ExitFunc);
		}
		break;
	case 4:
		ASSERT(m_nDividend != 0);
		break;
	default:
		break;
	}
	double fResult = double(m_nDivisor / m_nDividend);
	CString strResut = _T("");
	strResut.Format(_T("%f"), fResult);
	GetDlgItem(IDC_EDIT_RESULT)->SetWindowTextW(strResut);
}

猜你喜欢

转载自blog.csdn.net/dxm809/article/details/113954838