写了个小程序,其中有这样的代码:
CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("All Files(*.*)|*.*||"));
if(fileDlg.DoModal() == IDOK)
{
CString strPathName = fileDlg.GetPathName();
m_EdtTaskContent.SetWindowText(strPathName);
}
然后程序运行到该处时,偶尔出现程序崩溃的现象,网上查了资料,感觉很复杂,说什么tagOFN大小的问题,CString也有问题。没有搞懂。最后我把代码改成:
CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("All Files(*.*)|*.*||"));
if(fileDlg.DoModal() == IDOK)
{
wstring strPathName = fileDlg.GetPathName();
m_EdtTaskContent.SetWindowText(strPathName.c_str());
}
程序就不崩溃了。
CString不好用,以后大家还是多用string和wstring代替吧。