一个函数,执行过程中遇到问题该不该MessageBox来提示的问题,我认为这涉及的是界面处理与逻辑处理分开的原则问题,
如果该函数是逻辑处理功能的,建议不要进行MessageBox之类的操作,你可以返回不同的值,通过这些值告诉调用者是否出现错误以及具体什么错误
如:
BOOL CImportDataDlg::CheckFreeSpace(CString path)
{
ULARGE_INTEGER AvailableToCaller, Disk, Free;
char root = path.GetAt(0);
CString strRoot;
strRoot.Format("%c://",root);
if (CheckDevice(root))
{
if (GetDiskFreeSpaceEx(strRoot,&AvailableToCaller,&Disk, &Free))
{
CString VideoPath;
// ASSERT(g_DbConnect.IsOpen());
// CAdoRecordSet set;
// set.SetAdoConnection(&g_DbConnect);
//
// CString strSQL;
// strSQL.Format("SELECT [VideoFilePath] FROM VidoAngleData WHERE ([GameID] = %d AND [Angle] = 0)",m_GameID);
//
// BOOL bOk = set.Open(strSQL);
// ASSERT(bOk);
// set.GetCollect("VideoFilePath",VideoPath);
m_VideoData_path_Ctrl.GetWindowText(VideoPath);
ASSERT(!VideoPath.IsEmpty());
// if(!DIRECTORYEXISTS_S(VideoPath))
// {
// MessageBox("Video doesn't exist!");
// return FALSE;
// }
ULARGE_INTEGER DirSize;
DirSize.QuadPart = 0;
if(GetDirSize(VideoPath,DirSize))
{
if(DirSize.QuadPart >Free.QuadPart)
{
/*MessageBox("The Disk does not have enough space to save the video, Please choose another Disk!");*/
return FALSE;
}
}
}
return TRUE;
}
else
return FALSE;
}
这个函数的目的是判断两个空间的大小是否满足要求,不满足给出提示,这个函数应该完全可以复用的,但是我如果在里面加入MessageBox可能在一些不想要这个提示消息的地方也产生这个提示,这是我不希望看到的,所以应该把它一出去,根据返回值来判断