该不该MessageBox的思考

一个函数,执行过程中遇到问题该不该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可能在一些不想要这个提示消息的地方也产生这个提示,这是我不希望看到的,所以应该把它一出去,根据返回值来判断

 

你可能感兴趣的:(c,video,Integer,Path,disk)